Страницы

Поиск по вопросам

среда, 4 декабря 2019 г.

Кросс-компиляция из Windows под Linux. Получение бинарных файлов под Linux

#windows #c #cpp #linux


Мне поставили задачу - разобраться с кросскомпиляцией C и C++ приложений из под Windows
для Linux.
Я попробовал использовать Cygwin для этих целей. Установил эту оболочку, запустил
её. Установил компилятор cygwin-gcc-3.3.6-glibc-2.3.2-linux (старый правда). И попробовал
из него скомпилировать обычный HelloWorld и запустить его под Linux всё получилось. 
Но задача стоит чтобы из нашего Windows-приложения запускать кросс-компилятор, который
будет компилировать некоторые файлы. Как вообще это можно реализовать? Просто в данном
случае приходится запускать Cygwin, а уже из него gcc-linux или  g++-linux. Пока не
вижу путей запуска из нашего приложения Windows Cygwin и далее уже в нём запуска компилятора.
Может быть какие-то есть другие выходы из ситуации? Как-то можно настроить вообще
отдельный компилятор по Windows, который будет компилить бинарники под Linux?    


Ответы

Ответ 1



Установить cygwin. Создать скрипт запускающий сборку. Вызвать скрипт из приложения. В скрипте (cmd-файл) set CYGWIN_BIN=c:\cygwin\bin CYGWIN_BIN\gcc.exe ... В приложении CreateProcess(...) А еще есть такое средство для кросс-компиляций: crosstool-ng.

Ответ 2



А разве gcc.exe из cygwin не нужны cygwin-овские .dll ? По моему их загружает bash при старте окошка cygwn. По крайней мере у меня (Windows-XP) влет не получилось. c:\cygwin\bin\gcc t.c из cmd потребовал cygwin1.dll Вам надо разобраться с инициализацией cygwin, с загрузкой dll. А вот так получилось: c:\cygwin\bin\bash -c "gcc t.c" Только абсолютно не уверен, что полученный модуль будет работать в Linux.

Ответ 3



Если я правильно понял вопрос, то можно использовать pipe'ы чтобы скармливать через них команды в cygwin для g++-linux.

Комментариев нет:

Отправить комментарий