How to program for Windows in Ubuntu?

Is there anyway to create (C++ or C#) windows console applications inside Ubuntu’s IDE (e.g Anjuta) and compile it for Windows?

Asked By: Behzadsh


You want to do cross-compiling, which is a way to compile code for platforms other than the one your on, especially when the processor is completely different. Basically you need to install all the headers for your target (i.e. windows) and then tell the compiler it’s cross-compiling so it won’t do some of the system checks and instead will point to non-standard directories.

Depending on the language you might find it useful to do a search or question specifically, or if you’re doing basic c you can use MinGW tools and the same sort of linux based compile tools that use gcc:

sudo apt-get install gcc-mingw32

There is a good guide for qt/win32 cross compiling using MinGW tools.

You should have a look at MingW. It provides a gcc-compatible compiler for windows.

There is a cross-platform version that you can use from Linux, to generate Windows binaries. You can install it with synaptic, or by running:

sudo apt-get install gcc-mingw32

Based on that, and with using the usual ‘make’ command, you can create programs for windows.

Then any IDE that allows you to use make and gcc can use this compiler.
For instance, here is how to do that from the Code::Blocks IDE.

Answered By: Little Jawa

The most common way to program windows application linux (ubuntu) is using the mingw tools:

There are ubuntu packages for mingw ready to install.

Answered By: joke

The other answers are correct for C/C++ code; you’ll need to get a cross-compiler.

For C# code, you can just use Monodevelop Install Monodevelop, as Mono’s compiler produces the same type of bytecode and executable format as the .NET compiler (and visa versa). Apps you build with Mono will run unmodified on Windows machines as long as you stay within the standard .NET Base Class Libraries or bundle any extra library you use with your app.

Answered By: RAOF

Might want to give Qt with Qt Creator a try. Great framework for GUI and Console application you can the compile for Windows, Linux and OS X.

Answered By: SiliconChaos

From this page:

sudo apt-get install wine mingw32 mingw32-binutils mingw32-runtime

This is all that is needed for basic cross-compilation. Let’s try:

#include <windows.h>

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)
    "Cette fenĂȘtre prouve que le cross-compilateur est fonctionnel !",
    "Hello World", MB_OK);
  return 0;

Compile this using:

i586-mingw32msvc-g++ -o essai.exe essai.cpp

To execute, you need the mingw library: mingwm10.dll:

gunzip -c /usr/share/doc/mingw32-runtime/mingwm10.dll.gz > mingwm10.dll

Then you can launch it:

wine essai.exe

The text of the dialog box is in French language with an accent, to do it with gvim, convert the source to windows code page 1252: <ESC>:e ++enc=cp1252

Another solution, more powerful is to use UTF-8 but this requires changing the way strings are handled.

Answered By: Aubin
Categories: Answers Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.