Eсть одни хелловорды и их надо собрать под Ubuntu 32-bit и 64-bit, также под Win32. Вопрос а как в 64-x битной Ubuntu собрать 32-х битное приложение? Под Win32 можно собрать используя i686-w64-mingw32-g++. Т.е. введя i686-w64-mingw32-g++ firts.cpp -o first.exe получу exe-шник. А как получить 32-х битного эльфа на 64-х битной Ubuntu?
И ещё пару вопросов?
1. Чем отличается wineg++ от i686-w64-mingw32-g++?
2. Вообще, с помощью wineg++ можно получить exe-шник?
6, В Wine есть 16-ти битной код для запуска Win16 приложений. Чем и как его собирают? Кроме Wine есть ли другие программы под Linux работающие в 16-ти битном режиме, т.е. i286 (защищённый режим работы CPU, с 16-ти разрядными регистрами, сегментной моделью памяти) В Windows есть NTVDM, а в Wine -- WINEVDM. В каталоге C:windowssystem32 есть файл winevdm.exe Как собирают winevdm.exe?
Примеры:
При сборке
alexey@alexey-laptop:~/prg$ i686-w64-mingw32-g++ test.cpp -o test.exe alexey@alexey-laptop:~/prg$ x86_64-linux-gnu-g++ test.cpp -o test alexey@alexey-laptop:~/prg$ wineg++ test.cpp -o test1 /usr/bin/ld: Relocatable linking with relocations from format elf32-i386 (test-c0vYza.o) to format elf64-x86-64 (test1.kLZdHP.o) is not supported winebuild: /usr/bin/ld failed with status 1 winegcc: winebuild failed
alexey@alexey-laptop:~/prg$ file test.exe test.exe: PE32 executable for MS Windows (console) Intel 80386 32-bit alexey@alexey-laptop:~/prg$ file test test: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not stripped alexey@alexey-laptop:~$ file test1 test1: ERROR: cannot open `test1' (No such file or directory) alexey@alexey-laptop:~$
Почему wineg++ ничего не собирает?
Или же:
Собираем:
alexey@alexey-laptop:~/prg$ x86_64-linux-gnu-g++ second.cpp -o second second.cpp:2:21: фатальная ошибка: windows.h: Нет такого файла или каталога компиляция прервана. alexey@alexey-laptop:~/prg$ i686-w64-mingw32-g++ second.cpp -o second.exe alexey@alexey-laptop:~/prg$ wineg++ second.cpp -o second
alexey@alexey-laptop:~/prg$ file second.exe second.exe: PE32 executable for MS Windows (console) Intel 80386 32-bit alexey@alexey-laptop:~$ file second second: ERROR: cannot open `second' (No such file or directory) alexey@alexey-laptop:~/prg$ ./second.exe Today is: 2011/11/5 alexey@alexey-laptop:~/prg$
Для чего вообще нужен этот wineg++?
man wineg++ даёт: winegcc - Wine C and C++ MinGW Compatible Compiler
Так почему это C++ MinGW Compatible Compiler ничего не собирает?
Re:Как кросскомпилировать программы С++?
Если ты собираешь через wine, то получаешь программу Windows в виде бинарника под 32-битный Linux со статично залинкованной wine.
Если ты собираешь mingw, то получаешь что надо. Но библиотеки тоже надо компилить под mingw.