Запустить программу на C, написанную в Linux на Windows - PullRequest
5 голосов
/ 13 августа 2010

У меня есть программа на C, которую я написал в Linux, которая работает очень хорошо. Теперь я хочу запустить его на Windows.

Как мне легко запустить его в Windows?

Ответы [ 4 ]

27 голосов
/ 13 августа 2010

Немного прорабатывая ответы от caf и jartieda ...

Cygwin - это попытка подражать (почти)полная среда выполнения POSIX в собственном процессе Windows.Это достаточно полно, что удивительный объем кода приложения Unix просто компилируется и запускается с использованием знакомой идиомы ./configure && make && make install.Этот трюк был сделан путем предоставления библиотеки DLL, которая эмулирует системные вызовы POSIX с помощью Windows API.Исходя из этого, вы получаете полный набор инструментов GCC, bash и все обычные утилиты командной строки, к которым вы привыкли.Недостатком является то, что скомпилированная программа зависит от библиотеки Cygwin DLL, что затрудняет доставку результата в систему, в которой еще не установлен Cygwin и пользователь которой не хочет использовать оболочку Unix.

MinGW - это порт цепочки инструментов GCC, который генерирует собственные приложения Windows, которые зависят от хорошо известной (и распространяемой вместе с Windows) библиотеки времени выполнения MSVCRT.DLL C.Он не пытается эмулировать операционную систему POSIX, но приложения, которые в основном основаны на стандартных библиотеках C, часто создаются практически без изменений.

MSYS - это среда времени компиляции, которая обеспечиваетдостаточно утилит Unix (включая bash), чтобы часто запускать ./configure, и, если проект поддерживает результаты, завершите сборку с GCC MinGW.В результате получается собственный исполняемый файл Windows, который не зависит от каких-либо библиотек DLL, которые вы намеренно не используете, кроме MSVCRT.DLL.Хотя сама среда MSYS была ответвлением ранней версии проекта Cygwin, она в первую очередь предназначена для предоставления Unix-подобного места для компиляции собственных приложений Windows: обычно , а не создает новые приложения.основанный на его среде выполнения.

Другой подход к компиляции для Windows заключается в использовании кросс-компилятора MinGW на Linux.Так работают многие разработчики ядра MinGW, тестируя свои продукты либо под Wine, либо под Windows, работающей на виртуальной машине или на отдельном ПК.

Если в программе есть компонент с графическим интерфейсом, у вас могут возникнуть дополнительные трудности.Некоторые рамки GUI доступны как для Linux, так и для Windows. Qt , wxWidgets и IUP все приходят на ум, но есть и другие.

Редактировать: Я улучшил приведенный выше параграф о MSYS, чтобы подчеркнуть, что он предназначен для среды компиляции для создания программ, которые запускаются как собственные приложения Windows, а не как полноценная среда POSIX, такая как Cygwin.

Обратите внимание, также, что всегда есть возможность портировать проект на один из более традиционных компиляторов для разработки Windows.Open Watcom, компиляторы Borland и Microsoft имеют бесплатные или недорогие версии, хотя зачастую и не под лицензиями, которые делают сообщество open source полностью счастливым.

Этот подход, вероятно, требует больше усилий, потому что различия между средой Linux и средой Windows становятся более заметными, когда вы также переключаетесь с одного набора инструментов на другой.Это особенно верно в отношении компиляторов Microsoft, которые исторически не так полностью соответствуют стандартам, как GCC.

3 голосов
/ 13 августа 2010

Самый простой способ - установить среду Cygwin и скомпилировать ее в соответствии с этим.

2 голосов
/ 13 августа 2010

лучший способ перекомпилировать все это с помощью компилятора mingw.

простой способ перекомпилировать его в среде cygwin.

1 голос
/ 13 августа 2010

Ответы, которые вы получили до сих пор, сосредоточены на установке операционной системы GNU на ядре Windows;но вы также можете использовать бесплатные инструменты от Microsoft.Это решение, вероятно, является наиболее привлекательным, если вы хотите продолжить разработку под Linux, и лишь немного поработали над переносом на Windows:

Microsoft предлагает упрощенную версию своей среды разработки в качестве бесплатного: Visual StudioЭкспресс ( скачать ).Если ваша программа выполняет только IO, она, вероятно, будет скомпилирована без изменений, поскольку Microsoft также предоставляет стандартную библиотеку C.

Для GUI я также искренне рекомендую фреймворк Qt .Это очень хорошо написано и задокументировано;теперь он лицензирован под LGPL , так что вы можете бесплатно связать его с проприетарными приложениями.Однако он написан на C ++, поэтому вам нужно будет изменить язык программирования.Для интеграции QT с Visual Studio Express: я считаю, что это работает, но вы должны попробовать это.Около пяти лет назад я проверил интеграцию (собственной) QT и (профессиональной) Visual Studio для своего работодателя, и она отлично работала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...