I have an erlang project that includes NIFs with OS specific functions that work with raw sockets. I want to port this project on Windows which means changing the functions in NIFs to work on Windows.
What is the preferred IDE for erlang programming on Windows?
What do I have to set up in order to be able to compile this project?
I'd advice to just down load cygwin with its gcc and try to compile your nif as you would on linux. There are some instructions on github on how to setup an Windows environment to compile Erlang/OTP, but this is probably overkill for your NIF.
As an IDE I would use whatever you are using on Linux, i.e. hopefully Emacs :)
Erlang can be set up as an external tool in msvc.
Related
I apologize in advance for the stupidity of this question, but I am confused as h#&! and not even sure what to ask anymore.
For my math thesis - i.e., I am not a programmer - I have to write C code which uses the CVODE library, which is part of SUNDIALS (do you need all that detail?). But I can't work directly on the Gentoo Linux cluster where the proram will ultimately run.
According to the SUNDIALS' website, CVODE has very rarely been compiled and used in a native Windows environment, but it has been used using Cygwin. So I want to set up a C programming environment, including an IDE (especially a debugger), on my Windows PC, using Cygwin.
I have installed and executed the basic Cygwin (plus a package for nano editor) on my 64-bit Windows PC. I want to use Eclipse IDE, which is available for Linux and Windows, and can really only be used in a graphical interface (I think). I think I should set Eclipse up next (and then CVODE after that). That's what I'm trying to do now.
My basic question is how do I setup Eclipse to work with Cygwin? What Cygwin packages do I need to run Eclipse?
From the docs, I see that Cygwin has a server (Cygserver), but does not have a graphical interface. Or, it might have a graphical interface called Cygwin/X. Do I setup Eclipse in Windows to communicate with Cygserver, then do my work in Windows, but compilations and so forth would take place in the Cygserver? Or, do I install Cygwin/X and use a Linux version of Eclipse which, hopefully, works with Cygwin/X? If both are possible options, which is easier (I'm guessing the latter).
Cygwin is nice but I've run into issues now and then with it. I would recommend that you download Virtualbox or some similar VM software and install the same Linux that is there on your production cluster inside it. Then you'll have an environment on your development machine which matches the production one.
Now, install eclipse (and anything else you want) inside the VM and you can develop the software there smoothly without worrying about tangential issues like cygwin and the rest.
Is it possible to develop cross-platform application on Windows and can also compile for Mac OS X from Windows? I have checked Qt but that requires one to compile from Mac using Xcode.
If this is your priority then one option would be Java as at least a jar file built on one platform can be run on another.
If however you're talking about C or C++...
If you are creating a small command line tool then you might be able to make this work with gcc and a cross compiler, but I think it would be a lot of work.
If however you are wanting to create a GUI application I would urge you to give up now. There are so many issues - you'd have to use Carbon or Cocoa APIs which you can't build for on any other platform, you'd have to link against frameworks which won't exist on your compilation host, you won't be able to easily generate .plist files. Qt won't help as you need to be able to build it, which relies on these same frameworks.
In short, there's no alternative to building on an actual mac.
Furthermore, when it comes to fixing bugs, you will absolutely have to do this on a mac (either physical or virtual).
From what I know , in general you do need a mac to make the executable , even for a simple ansi c program you need gcc for mac.
You can create MacPorts Portfile.(If your application is open source)
A MacPorts port is a set of specifications contained in a Portfile
that defines an application, its characteristics, and any files or
special instructions required to install it. This allows you to use a
single command to tell MacPorts to automatically download, compile,
and install applications and libraries.
Take a look at IMCROSS.
IMCROSS is a simple, scripted method of installing cross-compilers and
cross-compiled libraries on a Linux (or possibly other *nix) system,
so that you can develop programs targeted to run on Microsoft Windows
and Mac OS X at the same time and in the same environment as you
develop Linux versions of those programs.
You can certainly do this using Real Studio. It can create Mac OS X applications on Windows without any trouble.
It cross-compiles for Windows, OS X and Linux. And it does it from any platform. It also can create web apps.
Sounds like you should check it out.
can I compile a linux application, with Linux-only available libraries, for Windows ?
I know the author of nginx web server uses some Wine tools to get his Linux-based project working on win32, natively, but how does he do that ?
Is MinGW support to create Windows binaries linked with Linux-specific libraries/headers ?
PS: I do not want to use cygwin due to big lost about performance...
Using something like mingw32 environment, you would have to find or build yourself all libraries on which the project you want to build depends (and all libraries on which those libraries depend).
You might end up having to implement some functionality which is missing on that platform. One of the reasons cygwin is slow is the hoops it has to jump through to simulate unix-y things that are missing on windows.
As long as the project uses the standard libraries on Linux and do not depend on anything specific to the Linux platform, the Mingw port of GCC can compile it on Windows.
If you are familiar with Linux tools and you don't Cygwin, you might want to take a look at MSYS:
MSYS is a collection of GNU utilities such as bash, make, gawk and grep to allow building of applications and programs which depend on traditionally UNIX tools to be present. It is intended to supplement MinGW and the deficiencies of the cmd shell.
I'd like to custom compile Apache for my Windows (Vista) machine. Do I need a special compiler for this, and how do I know if I already have a compiler (I have eclipse, but not sure if that's suitable).
Also, all I can find is linux tutorials. How would one get this done on Windows?
http://httpd.apache.org/docs/2.0/platform/win_compiling.html
I've been a Visual C++ user for quite some time now, and in the following weeks, I will be joining a (C++) Linux-only project. It should be noted that I have absolutely zero development experience on Linux.
Currently, Visual C++ 9 along with the Visual Assist X add-in make Windows-based development rather enjoyable. Having looked at various C++ IDEs on Linux left me a little disappointed with the coding experience, however.
I'd love to be able to use my current tool set (see above) for Linux development, so I have a couple of questions:
Can the VS editor convert between CR+LF <-> LF in a reliable manner?
Is it possible to set up a system where if I press "Build" in the IDE all of my work gets transferred to another box (e.g., a virtual machine) running Linux that compiles my project?
How would debugging work? Is it possible to remote-debug an application running in Linux via something like gdb? If so, would the "advanced" features of MS's debugger (e.g., tracepoints, break-if-cond, etc.) be lost?
Is this even a sane thing to think of? Does anyone use a Windows environment for Linux development? If not, I guess I should just suck it up and move to a Linux environment all together...?
Any input is appreciated, as I feel a little lost right now.
It's probable you'll eventually want to suck it up and work on Linux. microsoft, for obvious reasons, builds their tools to be very Windows-centric and Windows-specific; there are even a few ways in which Visual C++ isn't quite standard C++.
That said, though, you can work with VC++ to some extent.
There are easy tools on linux that will translate to UNIX line endings from Windows. (called something creative like 'dos2unix')
You can set up a remote file system, like with ExpanDrive for Windows, to let you keep your files there.
You can run ssh or rsh from Windows to run makes on the remote Linux box.
I've done windows/linux/freebsd cross-platform development with Windows as my primary OS... so it is possible.
Use VS as editor.
Access Linux Dev node via SSH with
putty.
Use revision control system
(subversion/git/bazaar/mercurial/cvs)
to check changes into repo & check
changes out on Linux.
Use a multi-platform build process. I
use SCons. It is python based
and works beautifully - though it is
a little slow with the default
settings.
Launch build process from shell using
putty.
Use additional shells as needed to
attach gdb & debug.
Now to answer your questions:
Yes. There is a VS setting to say use unix line endings. Many revision control systems can also be configured to correct this for you.
Maybe, but that's not how I did it.
Yes, you can remotely debug using GDB. GDB has many (all?) the features available with VS's debuger but you have to learn the GDB commands. I don't know of a way to use VS's debugger to debug processes compiled with GCC - though this is a frequent request.
I'd recommend that you dive in and try to learn the Linux way of doing things. What are the other people on your team using? If you use the same tool-set as other people, you'll be much better of when asking for help. If you're sitting on a Windows box cross-compiling using Cygwin, you're more or less on your own.
I work on a Linux team currently but use Visual Studio + Visual AssistX as my IDE. VS+VAX is the best environment for developing code in my opinion. Nothing like it exists anywhere else that I've found.
What you want to do is:
Install Cygwin openssh and configure it for shelling into your linux machine without a password.
Expose your development tree on your linux machine as a samba share and mount the share on your Windows machine.
Create a Visual Studio "makefile" project referencing the files on your linux machine.
Override the make command to ssh into your linux machine and execute the build.
Write a sed script on your linux machine that converts gcc/g++ output errors into visual studio format. I use something similar to this: sed -e 's/(.):([0-9]): (.*)/z:\path\to\code\\1(\2): \3/' \
I would really recommend you to give Linux a shot natively, not through a virtual machine. If you run it under a virtual machine you will probably end up doing 85% of your activities under Windows and this will prevent you from actually learning anything under linux.
Install linux in its own partition and work on it fulltime. Do this ASAP before the project start and get familiarized with the basics on how to use it first.
Regarding IDE's to use, find out what build system the project will use and what libraries you will be using. KDevelop is a great IDE although it might be a bit too cluttered. I really like Qt-Creator.
You might wanna give Eclipse a shot too.
As of what distribution to use, I would recommend you Archlinux if you feel like really learning something out of this and learning about linux along with learning to do development under linux. If you dont really want to learn too much about linux and go straight into developing then go with Kubuntu.
As for what Desktop Manager to use I would go with KDE.
There is no Visual Studio on Linux. Period. Try KDevelop or Code::Blocks. They should make development fun on Linux.
As for the compiler/executables you'd have to use the GNU GCC toolchain. There is no MS cl compiler on Linux either.
The debugger to use is gdb, again part of the GCC toolchain.
One more thing, try to pick a shell (like bash) and read up on it. It'll save quite some time in future.
I wrote a ftp script to move files from my pc to the linux box,
then set it up as a tool, so i can at least write the code on the pc, and have
easy access to source safe. I hit a tool button, and the files get transferred to
the linux box, where i use the utilities there to do the work
& 3.:
I use cygwin + Eclipse on Windows for developing and compiling.
With this combination I can also debug via gdbserver on the target machine (VM with x86 Linux or ARM "real" target).
Unfortunately you have to do some tiny but important settings (library paths in gdb etc...) but as soon as it works......
Sorry, no solution for debugging from within VS on a linux box...and I think there will none in the near future...
What you will find is that there are dialectic variations in the compiler and the libraries are different enough that it's unlikely to work well.
You're probably better off with a gcc based tool chain like MinGW if you don't want to switch your environment to Windows right off. MinGW uses native Win32 ports of standard open-source libraries such as getopt, and it is fairly easy to port software between Linux and MinGW32 (as long as you're not using Linux or Windows specific APIs).
However, porting software from MinGW to Visual C++ is quite a bit harder. On the few occasions that I've done this sort of thing I find that porting between Linux and MinGW is much easier than porting between MinGW and Visual C++.
As far as I'm aware I've never seen a MinGW plugin for Visual Studio, although one could theoretically write such a thing as Visual Studio will let you use third party compilers. Additionally, you will have to work with whatever build system the rest of the team uses, which is pretty much guaranteed not to be MSBuild.
So, I'd guess that it's fairly unlikely to work well. Still, as Hunt & Thomas would say getting used to a different way of doing things will make you a better programmer. While vi (or emacs if you're that way inclined), ctags and gdb work quite differently to Visual studio they're still quite a powerful development environment. With MinGW32 and Cygwin or MSYS you can use these without having to make a wholesale switch across to Linux.