Cross-compilation in Linux
Sometimes it is necessary to create Windows application from Linux. I will briefly introduce the method for it in the article.
The basic principle is simple and common for all cross-compilations (e.g., creating Symbian applications in Linux/Windows or other desktop OS):
$ sudo apt-get install mingw32
As an example, let's compile a simple Windows application with a message box (msgbox.c file):
#include <windows.h>
INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MessageBoxW(0, L"Hello from Linux!\n", L"MinGW app", MB_ICONEXCLAMATION);
return 0;
}
MingGW includes all headers and libraries to compile such kind of the applications. If you want to use something serious (like Qt-based applications), you have to precompile Qt from sources using MinGW.
Compilation is pretty easy too for that case:
$ i586-mingw32msvc-cc msgbox.c -o msgbox.exe -Wl,-subsystem,windows
MinGW contains two kind of compilers - for x86 and for x86_64 platforms, so use the required compiler. Additionally, we set up the subsystem flag (MinGW compile applications as console-based by default).
That's all. Upload the the output application to the Windows OS and enjoy.
The basic principle is simple and common for all cross-compilations (e.g., creating Symbian applications in Linux/Windows or other desktop OS):
- Get and install a toolchain for target platform (compiler, linker and other tools);
- Compile all required frameworks using this toolchain (for example, GStreamer, Qt, wxWidgets etc)
- Compile your own project with this toolchain and precompiled frameworks.
$ sudo apt-get install mingw32
As an example, let's compile a simple Windows application with a message box (msgbox.c file):
#include <windows.h>
INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MessageBoxW(0, L"Hello from Linux!\n", L"MinGW app", MB_ICONEXCLAMATION);
return 0;
}
MingGW includes all headers and libraries to compile such kind of the applications. If you want to use something serious (like Qt-based applications), you have to precompile Qt from sources using MinGW.
Compilation is pretty easy too for that case:
$ i586-mingw32msvc-cc msgbox.c -o msgbox.exe -Wl,-subsystem,windows
MinGW contains two kind of compilers - for x86 and for x86_64 platforms, so use the required compiler. Additionally, we set up the subsystem flag (MinGW compile applications as console-based by default).
That's all. Upload the the output application to the Windows OS and enjoy.
Comments
Post a Comment