Могу ли я скомпилировать консольное приложение Windows C (.exe) в Linux? (точнее, Ubuntu)
Я давно слышал о кросс-компиляторах, но тогда они меня не интересовали.
С наилучшими пожеланиями
Могу ли я скомпилировать консольное приложение Windows C (.exe) в Linux? (точнее, Ubuntu)
Я давно слышал о кросс-компиляторах, но тогда они меня не интересовали.
С наилучшими пожеланиями
Существует это сообщение, в котором содержится некоторая информация, а также это повторяющийся вопрос
Поскольку вы используете Ubuntu, вам нужны пакеты (я думаю) mingw32
apt-get install mingw32
Затем скомпилируйте с помощью i586-mingw32msvc-gcc, например.
i586-mingw32msvc-gcc helloworld.c -o helloworld.exe
Можно, если это стандартный C и не используются библиотеки Windows.
Сам код C очень переносим, а стандартные библиотеки C (libc) доступны почти везде. Если ваш код выполняет функции printf(), sscanf(), fopen() и так далее, он просто скомпилируется и запустится на другой платформе. Windows, Linux, BSD и т. д.
Проблемы с переносимостью создают библиотеки, отличные от libc.
Все, что связано с библиотеками платформы Windows, вызывает проблемы. Kernel32.lib, user32.lib и т.д.
Также есть сторонние библиотеки, которые, если они написаны на C, должны быть доступны в Linux и Windows. Хорошим примером здесь является PCRE — это библиотека регулярных выражений, написанная на C, и она доступна как в Windows, так и в Linux. в этом наборе буквально сотни библиотек.
Если вы ограничитесь вызовами libc и библиотек в переносимые библиотеки, то у вас будет переносимое приложение C.
Если вы говорите о приложении строго ANSI C, то у вас не должно возникнуть проблем с компиляцией с помощью gcc на платформе Linux.
Если вам нравятся системные библиотеки Windows, вам придется заменить эти вызовы их системными эквивалентами * nix (если они есть).
Если вы хотите скомпилировать программу из Linux в исполняемый файл Windows, да, кросс-компиляторы будут вариантом. http://www.airs.com/ian/configure/configure_5.html немного помог.
Вы имеете в виду, можете ли вы создать Windows .exe в Linux (т.е. разработать в Linux и доставить приложение пользователям Windows?)
Или вы имеете в виду взять приложение для Windows и перекомпилировать (перенести) его в Linux, чтобы оно было построено и работало в Linux?
Вы можете использовать WINE и установить VS, например. Другое решение использует MonoDevelop.
также вы можете использовать кросс-компиляторы, такие как Код::Блоки
Возможна кросс-компиляция. Насколько я знаю, вы получаете исполняемый файл Windows, который, конечно же, будет работать под Windows (и, возможно, WINE).
Для этого есть 2 возможных варианта: mingw и cygwin.
Один учебник здесь. Страница кросс-компиляции MingW находится здесь.
Вы также можете использовать стандартный gcc в терминале Linux, вы можете использовать те же программы, которые вам нужны, только для изменения std.h с unistd.h (это означает, что вам нужно будет перейти на библиотеки, специфичные для Linux). У меня есть курс по программированию для Linux в школе, за исключением того, что он касается Ubuntu и изменений в библиотеке для ввода / вывода и некоторых связанных с потоками специфических для Linux, все это одно и то же
пример: gcc -c myprogram.c // для компиляции gcc -o myprogram.o имя для создания lib myprogram // с аргументами, если они есть