Компиляция Windows программы в Ubuntu Linux

Было необходимо срочно сделать маленькую программу под Windows, открывающую файл index.html в браузере.

Код программы простейший, но встала проблема с его компиляцией, под винду нужно искать где-то компилятор, что не просто, с учетом что почти все они платные. Повторюсь, задачу нужно было решить срочно.

В итоге решил собрать эту программу в линуксе. Погуглив, узнал что есть такая программа, как «mingw32», ей то и решил воспользоваться. После установки пакета gcc-mingw32, а заодно и wine (для проверки готовой программы), скопилировал программу на си:

start.c:

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <shellapi.h> 
int main(int argc, char *argv[])
{
    ShellExecute(NULL, «open», «index.html», NULL, NULL, SW_SHOWNORMAL);
    return 0;
}

Компилируем:

$ i586-mingw32msvc-gcc start.c -o start.exe

Вуаля, файл start.exe готов к использованию в Windows. На всякий случай проверяем:

$ wine start.exe

В браузере открывается наш index.html файл, что и требовалось.

Задача была решена за 15 минут, с учётом того, что я раньше никогда не компилировал C код. В линуксе все инструменты под рукой, можешь сделать себе всё что нужно, виндовс же это супермаркет, где нужно найти нужное, если оно вообще есть, и потом купить его, либо украсть, при этом постоянно рискуя словить вирус.

Не пришлось бы этого делать, если бы хоть кто-то выложил скомпилированную программу, а не только её исходники. Исправляю эту ситуацию, выкладываю готовый start.exe: start.7z (упаковано в 7-Zip архив)

И ещё, обязательно проверяйте исполняемые файлы на отсутствие вирусов: http://www.kaspersky.ru/scanforvirus

07 апреля 2011

linux