#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.
Комментариев нет:
Отправить комментарий