Руководство по кросс-компиляции приложения C ++ из Linux в Windows? - PullRequest
40 голосов
/ 08 октября 2008

Существует ли руководство по кросс-компиляции приложения C ++ из Linux в Windows?

Только это. Я хотел бы, чтобы некоторая информация (ссылки, ссылки, примеры ...) помогла мне сделать это.

Я даже не знаю, возможно ли это.

Моя цель - скомпилировать программу в Linux и получить файл .exe, который я могу запустить под Windows.

Ответы [ 3 ]

53 голосов
/ 08 октября 2008

Основы не так уж сложны:

sudo apt-get install mingw32    
cat > main.c <<EOF
int main()
{
  printf("Hello, World!");
}
EOF
i586-mingw32msvc-cc main.c -o hello.exe

Замените apt-get на yum или любым другим, что используется в вашем дистрибутиве Linux. Это сгенерирует hello.exe для Windows.

Как только вы обдумаете это, вы можете использовать autotools и установить CC=i586-mingw32msvc-cc

CC=i586-mingw32msvc-cc ./configure && make

Или используйте CMake и файл набора инструментов для управления сборкой. Еще сложнее добавить нативные кросс-библиотеки. Обычно они хранятся в /usr/cross/i586-mingw32msvc/{include,lib}, и вам необходимо добавить эти пути отдельно на этапе настройки процесса сборки.

6 голосов
/ 08 октября 2008

Это зависит от того, что вы имеете в виду (я не могу сказать).

  1. Если вы имеете в виду, что вы хотите использовать существующее приложение Linux в Windows, то вы можете попробовать скомпилировать его, используя Cygwin в Windows. Это, однако, не дает вам исполняемый файл Windows, свободный от всех зависимостей от Cygwin (ваш исполняемый файл по-прежнему зависит от файла cygwin.dll) - и ему все еще может потребоваться некоторое портирование, прежде чем он будет работать. Смотри http://www.cygwin.com.

  2. Если вы имеете в виду, что вы хотите иметь возможность выполнять фактическую компиляцию приложения Windows в Linux и создавать исполняемый файл .exe, который выполняется в Windows - таким образом, используя вашу коробку Linux для разработки и / или компиляции, тогда Вы должны изучить MinGW для Linux, который является инструментом для кросс-компиляции для Windows на Linux. Смотри http://www.mingw.org/wiki/LinuxCrossMinGW.

С наилучшими пожеланиями!

4 голосов
/ 26 августа 2010

Я предлагаю вам попробовать следующее: GUB (Grand Unified Builder), поскольку он выполняет кросс-компиляцию нескольких пакетов с их зависимостями и собирает их в единый установочный пакет для 11 в настоящее время архитектур. Вы можете скачать готовый iso для установки на ВМ с здесь и следовать источнику здесь . В настоящее время он может использоваться для кросс-компиляции GNU LilyPond / GNU Denemo / Inkscape и OpenOffice.org.

Целевые архитектуры:

  • darwin-ppc - файл tar.bz2 для Darwin 7 (MacOS 10.3) / PowerPC
  • darwin-x86 - файл tar.bz2 для Darwin 8 (MacOS 10.4) / x86
  • mingw - исполняемый файл mingw для Windows32
  • linux-x86 - архив shar для Linux / x86
  • linux-64 - архив shar для Linux / x86_64
  • linux-ppc - архив shar для Linux / PowerPC
  • freebsd-x86 - архив shar для FreeBSD 4 / x86
  • freebsd-64 - архив shar для FreeBSD 6 / x86_64
  • cygwin - .tar.bz2 пакеты для Cygwin / Windows32
  • arm - shar архив для Linux / ARM (в основном не тестировался)
  • debian - архив shar для Debian (в основном не проверено)
...