Создание Win32 программ под Linux

Вопросы использования среды кросс-компиляции MinGW
Создано Harbour в Вт 27 / Окт, 2009 15:33 EET
Последнее сообщение Ср 28 / Окт, 2009 06:57 EET
(1 Сообщений | 1242 Посещений | Активность=2.00)

Поиск:

 Если страсть как нужно че-нить скомпилить под венду, то прямой путь тукана - это ставить/загружать ее болезную, заливать в придачу еще дикую кучу программ аля "минимальный пакет разработчика", защищать несчастную от злого интернета и вирусов, и прочее, прочее, прочее. Нормальные герои, как известно, всегда идут в обход этих соврешенно не нужных проблем: MinGW - наш ответ Чемберлену. Можно продолжать себе сидеть под Linux и, спокойно попивая чаек, с успехом ваять программы для венды, тут же проверяя их под Wine.

 Для начала нам понадобиться codegen среда - все тот же старый добрый gas/ld/gcc и g++:

// Убеждаемся, что в системе стоит последний gmp и mpfr
1. Компилим и ставим binutils:

    • configure --prefix=/usr --target=i386-mingw32
    • make && make install

2. mkdir /usr/i386-mingw32/include;

    • tar xvfzp mingw-runtime* w32api-*;
    • cp -a mingwrt-*/include/* /usr/i386-mingw32/include
    • cp -a w32api-*/include/* /usr/i386-mingw32/include

3. ../gcc-4.4.2/configure --prefix=/usr --target=i386-mingw32 --disable-win32-registry --enable-languages=c

// ignore missing dllcrt2.o

    • make -i && make -i install

4. w32api-*/configure --prefix=/usr/i386-mingw32 --host=i386-mingw32

    • make && make install

5. mingwrt-*/configure --prefix=/usr/i386-mingw32 --host=i386-mingw32

    • make -i CFLAGS=-I/usr/i386-mingw32/include
    • make -i && make -i install

// now we have dllcrt2.o installed

6. cd gcc-build

    • make && make install

7. cd mingwrt-build

    • make && make install

8. cd gcc-build

        ../gcc-4.4.2/configure --prefix=/usr --target=i386-mingw32 --disable-win32-registry --enable-languages=c,c++

    • make && make install

9. Проверяем на простом как конь примере :

// wintest.c
#include <windows.h>

int WINAPI WinMain (HINSTANCE hInstance,
                          HINSTANCE hPrevInstance,
                          PSTR szCmdLine,
                          int iCmdShow)
    {
       MessageBox (NULL, "Hello", "Hello Demo", MB_OK);
       return (0);
    }

// компилим
i386-mingw32-gcc wintest.c -o wintest.exe -mwindows

// пущаем
wine wintest.exe

 И так, кое что уже есть. Конечно писать программы на голом winapi - это для людей знающих толк в извращениях, скучно и обычно никому не нужно. Неплохо бы одним движением руки, так сказать, а не месяц биться фэйсом об тейбл с аналогичным результатом. Вобщем надо бы определиться с GUI фреймворком, но об этом в следующей заметке ...

Последние сообщения блога

  1. Переезд, будь он неладен ...
    Вт 06 / Апр, 2010 18:44 EEST
  2. О трудах человеческих
    Вт 23 / Mar, 2010 19:22 EET
  3. Получаем root в SwitchVox
    Вт 23 / Mar, 2010 14:37 EET
  4. Из лекции Махараджа Шри Девдаса
    Сб 13 / Февр, 2010 12:56 EET
  5. Жизнь должна быть ...
    Пт 12 / Февр, 2010 15:49 EET
  6. Из Дао де Дзин
    Пт 12 / Февр, 2010 15:48 EET
  7. Из Дао де Дзин
    Пт 12 / Февр, 2010 15:48 EET