компиляция linux программ для windows

Cygwin или MinGW? Собираем программы для Windows без Windows

Содержание статьи

В общем-то, даже в Microsoft уже признали проблему и сделали WSL (Windows Subsystem for Linux), чтобы запускать те приложения, у которых нативных версий под Windows нет. Однако если ты хочешь сделать свою программу доступной для широкой аудитории, то WSL вовсе не панацея, поскольку у среднего пользователя эта система вряд ли установлена и у нативных приложений возможностей для интеграции с Windows все равно больше.

Во многих случаях камень преткновения — не сам код программы, а система сборки. Если ты используешь кросс-платформенные библиотеки и не вызываешь специфичные функции POSIX, портирование может вообще не требоваться. Главное — собрать исполняемые файлы.

GNU и Windows

Для сборки программ с помощью GNU toolchain на Windows часто используют два проекта: Cygwin и MinGW + MSYS. У них схожие цели, но разные детали реализации. Давай разбираться.

Cygwin

Cygwin — самая полная реализация окружения GNU для Windows. Он предоставляет большую часть POSIX API в виде библиотеки, что позволяет собирать программы из UNIX без портирования, если только им не требуется семантика UNIX. Яркий пример — демоны, им нужен fork() и сигналы, которых нет в Windows, да и службы Windows устроены совсем иначе.

Кроме библиотеки, дистрибутив содержит набор классических команд UNIX и терминал. Реализации команд используют эту библиотеку и поддерживают некоторые возможности UNIX, такие как регистрозависимые имена файлов.

Целевой способ использования: если нет желания или возможности портировать программу на Windows или использовать только платформенно независимые API, ее можно собрать «под Cygwin», ценой зависимости от cygwin1.dll и относительной изоляции от всей остальной системы.

MinGW и MSYS

Если цель Cygwin — сделать возможной сборку немодифицированных приложений на Windows ценой внешней зависимости, то цель MinGW + MSYS — производить приложения без внешних зависимостей.

MinGW и MSYS — это независимые пакеты, но их часто путают и смешивают друг с другом (а часто путают и с Cygwin). Можно сказать, что MinGW — это эквивалент GCC и binutils, а MSYS — расширенный эквивалент coreutils.

Начнем с MSYS. MSYS — это более «нативная» и легковесная альтернатива Cygwin. Этот пакет включает библиотеку с реализациями функций POSIX, но она предназначена для внутреннего пользования, и авторы категорически не рекомендуют связывать с ней свои приложения.

Библиотека MSYS не реализует UNIX поверх Windows, а следует соглашениям Windows — к примеру, сознательно не учитывает регистр букв в путях к файлам. Главная цель MSYS — предоставить нужные для скриптов сборки программы вроде Bourne shell, make и прочее, что обычно требуется для autotools.

MinGW содержит версии GCC и binutils (ассемблер as, компоновщик ld и так далее), которые производят исполняемые файлы для Windows в формате PE/COFF. Здесь мы и подходим к ключевому моменту: MinGW, как и все остальные части GNU toolchain, такой же платформенно независимый проект.

Кросс-компиляция в GNU toolchain уже давно обычное дело, и в GCC целевая платформа и хост независимы друг от друга. Можно запускать GCC на Linux для x86 и собирать программы для Linux на ARM, или наоборот. Совпадать не обязаны не только рабочая и целевая архитектуры процессора. Точно так же не обязаны совпадать даже ОС и формат исполняемого файла.

Ставим MinGW

Авторы многих дистрибутивов GNU/Linux уже постарались за нас, так что многие кросс-версии GCC, включая MinGW, можно поставить из репозиториев.

MinGW-w64, несмотря на название, поддерживает и Win32, и Win64. Это форк MinGW, который создали в первую очередь для реализации недостающей в оригинальном проекте поддержки Win64, отсюда и название.

Hello World

Тестирование кросс-компилированных программ для других архитектур — непростая задача, но, поскольку наша целевая платформа — Windows на x86, мы легко можем протестировать их в Wine:

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Источник

Как с помощью Cygwin компилировать Linux-программы под Windows

Оригинал: How to Compile Linux Programs Under Windows with Cygwin
Автор: Gary Sims
Дата публикации: 12 июня 2014 г.
Перевод: Н.Ромоданов
Дата перевода: июль 2014 г.

Windows и Linux являются двумя очень разными системами и поэтому часто непросто портировать программы, написанные для одной из них на другую систему, особенно когда дело касается программ с графическим интерфейсом. Хотя есть много различных кросс-платформенных библиотек и пакетов SDK, нативные программы, написанные без учета портируемости, портировать довольно трудно.

Когда дело касается компиляции и запуска программ, написанных для Linux, в Windows, есть решение, известное как Cygwin. Проект Cygwin представляет собой набор наиболее распространенных инструментов и компиляторов (включая оболочки Bash и цепочку компиляторов GNU) для Windows. В его состав также входит библиотека, с помощью которой реализован слой совместимости, поэтому можно компилировать программы, в которых вызываются интерфейсы API, специфические для Linux. Cygwin не является эмулятором или виртуальной машиной, и он не позволяет двоичным файлам Linux работать на Windows без их предварительной перекомпиляции.

Перейдите на страницу установки Cygwin и скачайте 32-разрядную или 64-разрядную программу установки, (в зависимости от того, каким вариантом ОС Windows вы пользуетесь). Запустите программу установки. Нажмте кнопку Next (Далее) и снова ее нажмите для перехода в раздел “Install from Internet” («Установка из Интернета»). По умолчанию используется каталог «C:\cygwin». Его можно изменить, если это необходимо, но если у вас нет особых причин его изменять, то по умолчанию лучше использовать именно его. Нажмите кнопку Next, Next и еще раз Next.

У проект Cygwin по всему миру есть сайты зеркал; выберите то, которое, как вы думаете, лучше соответствует вашему местоположению, и нажмите кнопку Next. Теперь вам следует выбрать, какие пакеты будут установлены. Для компиляции простых программ Linux в Windows, вам понадобится цепочка компиляторов GNU (GCC), среди который предлагается компилятор С и C++.

В поле поиска наберите «gcc», а затем нажмите на маленький символ плюс, который находится в списке пакетов рядом с «Devel». Найдите «gcc-core» и «gcc-g++» и для каждого из них нажмите «Skip» («Пропустить»). Слово «Skip»превратится в номер версии, а обозначение «n/a» («Отсутсвует») в колонке «Bin?» превратится в позицию, в которой можно поставить отметку. В поле поиска наберите «make» и найдите «make» в разделе «Devel». Нажмите «Skip» для того, чтобы пометить его для установки. Найдите «wget», а также пометьте его для установки из «Web». Чтобы собрать пример, приведенный ниже, нам также потребуется библиотека «libiconv;» найдите ее и пометьте для установки.

Нажмите кнопку Next. После этого инсталлятор укажет, какие дополнительные пакеты необходимо установить с тем, чтобы разрешить зависимости. Нажмите Next для того, чтобы согласиться с рекомендациями.

После того, как все пакеты будут загружены и установлены, выполните прежде, чем произойдет выход из терминала, последние шаги настройки. Запустите терминал Cygwin с тем, чтобы войти в Linux-среду разработки. В терминале вы не сможете использовать команды Windows, например, команду dir, и сможете пользоваться только командами командной оболочки, например, ls.

Для того, чтобы продемонстрировать, как скомпилировать программу Linux в Windows, мы будем использовать пакет HTML-XML от W3. Чтобы узнать, что он может делать, поморите статью Как работать с файлами HTML и XML из командной строки.

Скачайте исходные файлы с помощью команды wget:

Теперь распакуйте архивный файл:

Исходные файлы теперь находятся в каталоге html-xml-utils-6.7. Перейдите этот каталог:

Исходные файлы теперь находятся в каталоге html-xml-utils-6.7. Перейдите этот каталог:

Прежде, чем файлы будут собраны, вам нужно будет запустить скрипт configure для генерации файла Makefile (файл инструкций по сборке), который предназначен для данной среды сборки. Это обычный шаг сборки на Linux (и в Cygwin) для построения пакетов из исходных кодов.

После того, как операция configure будет завершена, вы можете начать сборку с помощью команды make:

Сборка не прошла до конца из-за ошибки. Я был в нерешительности относильно того, что делать дальше. Я мог либо перейти на другой проект, либо сражаться с пакетом HTML-XML-utils. Я выбрал последнее, поскольку на нем показано, что не все гладко, когда вы пытаетесь компилировать программы Linux под Cygwin. Решение этой конкретной проблемы проста. Сообщение об ошибке показывает, что компоновщик не в состоянии найти библиотеку iconv. Беглый взгляд на команду компоновки показывает, что эта библиотека не указана. Быстрое и грубое решение представляет собой запуск команды вручную и задание инструкции компоновщику использовать библиотеку libconv. «Правильный» способ исправить эту ошибку состоит в анализе файла Makefile и т. д. с тем, чтобы выяснить, почему сборка не проходит.

Выполните следующую команду, указав в конце «-liconv»:

После того, как файл hxindex.exe будет построен, можно переходить к остальной части сборки, набрав еще раз команду make. Когда работает команда make, она проверяет, что было собрано, а что — нет, а затем процесс сборки продолжается. Поскольку мы вручную собрали пакет hxindex.exe, команда make просто перенесет следующий двоичный файл в этот список.

Если у вас при использовании Cygwin возникли проблемы, вы можете посмотреть часто задаваемые вопросы FAQ и документацию. Либо вы можете обратиться к спискам рассылки. Если у вас возникли проблемы с выполнением действий, описанных выше, то, пожалуйста, расскажите об этом в комментариях.

Источник

Скомпилируйте и запустите программу на C в Linux и Windows

Вступление

В этом документе мы увидим, как мы можем скомпилировать и выполнить программу на C в Linux и Windows. Документ также содержит список доступных компиляторов Си.

Содержание:

Установите, скомпилируйте и выполните программу на языке C с помощью Visual C ++ 2008 Express Edition с пакетом обновления 1 в Windows

Загрузить и установить

Для загрузки укажите в браузере http://www.microsoft.com/visualstudio/en-us/products/2008-editions/express и выберите «Язык» и нажмите «Скачать бесплатно». После завершения загрузки запустите исполняемый файл, он попросит вас выбрать, хотите ли вы установить некоторые другие дополнительные продукты, снимите флажки с этих параметров, чтобы можно было установить только необходимый продукт. Процесс установки начнет загружать другие файлы с сайта Microsoft, и, в зависимости от скорости вашего соединения, установка займет некоторое время.

После завершения установки в Windows 7 запустите командную строку Visual Studio 2008 в меню «Все программы»> «Microsoft Visual C ++ 2008 Express Edition»> «Инструменты Visual Studio»> «Командная строка Visual Studio 2008».

Напишите, скомпилируйте и выполните свою первую программу

Шаг 1: введите notepad demo.c (вы можете заменить имя файла своим собственным) и нажмите Enter, когда вас спросят, хотите ли вы создать новый файл, скажите «да».

Шаг 2: введите следующий код и нажмите Файл> Сохранить. Когда вас спросят, где сохранить файл, выберите подходящее место.

Шаг 3: Введите cl sample.c и нажмите ввод. Это скомпилирует программу для создания исполняемого файла (.exe).

Шаг 4: Теперь просто введите имя образца файла и введите. Это покажет вам результат.

Установить, скомпилировать и выполнить программу на C с Turbo C ++ в Windows

Получить и установить

Запустите Turbo C ++ на весь экран в Windows 7

Написать, скомпилировать и запустить C программу

Откройте новый файл из меню «Файл»> «Создать» в Turbo C ++ IDE. Напишите небольшую программу в IDE.

Нажмите на Опции и перейдите в Каталоги. Нажмите «Каталоги» и установите «Выходной каталог», как вам нужно, и «Исходный каталог», где вы сохранили файл программы «Си».

Теперь перейдите к компиляции и нажмите на Компиляция. А затем нажмите на Run. Вы увидите вывод вашей программы на Си.

Писать, компилировать и запускать программу на C, используя wxDev-C ++ в Windows

После загрузки установщика запустите exe-файл, дважды щелкнув по нему, и мастер установки поможет вам выполнить установку. После завершения установки вы запускаете ее из «Программы», и при первом запуске она занимает некоторое время для разбора заголовочных файлов. Окно IDe выглядит следующим образом:

Вы можете начать программирование, нажав Файл> Создать> Исходный файл в окне. Обратите внимание, что при сохранении файла вы должны выбрать тип файла как C, так как эта IDE также поддерживает C ++.

Вы можете использовать F9 или как показано ниже для компиляции и запуска программы.

Когда компиляция завершена, она открывает новое окно, чтобы показать вам вывод.


Если у вас есть ошибки, он показывает вас на панели ниже, как показано ниже.

Хотя мы немного устарели, мы находим wxDev-C ++ отличной IDE для программирования C. Вы можете попробовать его, если используете Windows.

Установить, скомпилировать и запустить C программу в Linux

Если компилятор C уже установлен, он покажет вам сообщение, как указано выше. Если нет, то будут установлены все необходимые пакеты.

Теперь откройте текстовый редактор и напишите небольшую программу на C, например, следующую и сохраните ее как demo.c:

Теперь выполните команду, как показано ниже, чтобы скомпилировать и выполнить файл:

Вот как вы можете установить GNU Gcc компилятор, написать программу на C и запустить ее под Linux.

Список компиляторов C

В следующей таблице приведен список доступных компиляторов Си. Это не полный список, но он даст вам четкое представление о различных компиляторах C, о том, какую ОС / платформу они поддерживают, и имеет ли она среду программирования.

Предыдущий: C учебник
Далее: C Basic

Источник

Как с помощью Cygwin компилировать Linux-программы под Windows

Windows и Linux являются двумя очень разными системами и поэтому часто непросто портировать программы, написанные для одной из них на другую систему, особенно когда дело касается программ с графическим интерфейсом. Хотя есть много различных кросс-платформенных библиотек и пакетов SDK, нативные программы, написанные без учета портируемости, портировать довольно трудно.

Когда дело касается компиляции и запуска программ, написанных для Linux, в Windows, есть решение, известное как Cygwin. Проект Cygwin представляет собой набор наиболее распространенных инструментов и компиляторов (включая оболочки Bash и цепочку компиляторов GNU) для Windows. В его состав также входит библиотека, с помощью которой реализован слой совместимости, поэтому можно компилировать программы, в которых вызываются интерфейсы API, специфические для Linux. Cygwin не является эмулятором или виртуальной машиной, и он не позволяет двоичным файлам Linux работать на Windows без их предварительной перекомпиляции.

Перейдите на страницу установки Cygwin и скачайте 32-разрядную или 64-разрядную программу установки, (в зависимости от того, каким вариантом ОС Windows вы пользуетесь). Запустите программу установки. Нажмте кнопку Next (Далее) и снова ее нажмите для перехода в раздел “Install from Internet” («Установка из Интернета»). По умолчанию используется каталог «C:\cygwin». Его можно изменить, если это необходимо, но если у вас нет особых причин его изменять, то по умолчанию лучше использовать именно его. Нажмите кнопку Next, Next и еще раз Next.

У проект Cygwin по всему миру есть сайты зеркал; выберите то, которое, как вы думаете, лучше соответствует вашему местоположению, и нажмите кнопку Next. Теперь вам следует выбрать, какие пакеты будут установлены. Для компиляции простых программ Linux в Windows, вам понадобится цепочка компиляторов GNU (GCC), среди который предлагается компилятор С и C++.

В поле поиска наберите «gcc», а затем нажмите на маленький символ плюс, который находится в списке пакетов рядом с «Devel». Найдите «gcc-core» и «gcc-g++» и для каждого из них нажмите «Skip» («Пропустить»). Слово «Skip»превратится в номер версии, а обозначение «n/a» («Отсутсвует») в колонке «Bin?» превратится в позицию, в которой можно поставить отметку. В поле поиска наберите «make» и найдите «make» в разделе «Devel». Нажмите «Skip» для того, чтобы пометить его для установки. Найдите «wget», а также пометьте его для установки из «Web». Чтобы собрать пример, приведенный ниже, нам также потребуется библиотека «libiconv;» найдите ее и пометьте для установки.

Нажмите кнопку Next. После этого инсталлятор укажет, какие дополнительные пакеты необходимо установить с тем, чтобы разрешить зависимости. Нажмите Next для того, чтобы согласиться с рекомендациями.

После того, как все пакеты будут загружены и установлены, выполните прежде, чем произойдет выход из терминала, последние шаги настройки. Запустите терминал Cygwin с тем, чтобы войти в Linux-среду разработки. В терминале вы не сможете использовать команды Windows, например, команду dir, и сможете пользоваться только командами командной оболочки, например, ls.

Скачайте исходные файлы с помощью команды wget:

Теперь распакуйте архивный файл:

Исходные файлы теперь находятся в каталоге html-xml-utils-6.7. Перейдите этот каталог:

Исходные файлы теперь находятся в каталоге html-xml-utils-6.7. Перейдите этот каталог:

Прежде, чем файлы будут собраны, вам нужно будет запустить скрипт configure для генерации файла Makefile (файл инструкций по сборке), который предназначен для данной среды сборки. Это обычный шаг сборки на Linux (и в Cygwin) для построения пакетов из исходных кодов.

После того, как операция configure будет завершена, вы можете начать сборку с помощью команды make:

Сборка не прошла до конца из-за ошибки. Я был в нерешительности относильно того, что делать дальше. Я мог либо перейти на другой проект, либо сражаться с пакетом HTML-XML-utils. Я выбрал последнее, поскольку на нем показано, что не все гладко, когда вы пытаетесь компилировать программы Linux под Cygwin. Решение этой конкретной проблемы проста. Сообщение об ошибке показывает, что компоновщик не в состоянии найти библиотеку iconv. Беглый взгляд на команду компоновки показывает, что эта библиотека не указана. Быстрое и грубое решение представляет собой запуск команды вручную и задание инструкции компоновщику использовать библиотеку libconv. «Правильный» способ исправить эту ошибку состоит в анализе файла Makefile и т. д. с тем, чтобы выяснить, почему сборка не проходит.

Выполните следующую команду, указав в конце «-liconv»:

После того, как файл hxindex.exe будет построен, можно переходить к остальной части сборки, набрав еще раз команду make. Когда работает команда make, она проверяет, что было собрано, а что — нет, а затем процесс сборки продолжается. Поскольку мы вручную собрали пакет hxindex.exe, команда make просто перенесет следующий двоичный файл в этот список.

Если у вас при использовании Cygwin возникли проблемы, вы можете посмотреть часто задаваемые вопросы FAQ и документацию. Либо вы можете обратиться к спискам рассылки. Если у вас возникли проблемы с выполнением действий, описанных выше, то, пожалуйста, расскажите об этом в комментариях.

Источник

Компиляция проекта под linux из windows

Скорее всего раздел не подходит, просто не знаю к какому это относится больше.

Сборка проекта под Windows, Linux и MacOS и тестирование
Есть приложение с графическим интерфейсом которое нужно собрать под поддерживаемые версии Windows.

Компиляция проекта из-под Linux для Win32
Здравствуйте. Я работаю из под Linux, нужно что-бы созданная мною программа работали и под win32.

Компиляция Builder’овского проекта под Linux, (и освоение Linux после Builder’a)
Есть не очень маленький проект, написанный в винде на Builder’e. 1) Сложно ли его будет.

QT компиляция из Windows под Linux
Поделитесь, если не сложно, линком как сие делать.

Добавлено через 2 минуты

Астрологи объявили Неделю Самостоятельности. Польза от знаний, полученных самостоятельно, увеличена вдвое.

Понятно( немного). Спасибо!

Добавлено через 17 минут

Что понимается под результатом? Если внешняя видимость работы, то да, будет одинаково.
Исполняемый файл же будет разный. Каждый под свою платформу.
В штатном режиме, компилятор собирает исполняемый файл под платформу, на которой сам запускается.
Для того, чтобы получить исполняемый файл для чужой платформы существуют кросскомпиляторы.
В Linux можно собрать чужеродный Windows-бинарник, используя кросскомпилятор mingw. И запустить его потом используя Wine, который эмулирует виндовое окружение. Это все относительно штатные средства, есть практически в любом дистрибутиве.
В Windows, чтобы сделать тоже самое, штатных средств нет. Поэтому ТСу и было предложено поставит Сygwin, который содержит *nix-совое окружение и допускает без проблем собрать или установить кросскомпилятор для сборки *nix-бинарников. Запустить же их под Windows так же просто не получится. Решения конечно есть, все исходят из виртуализации, вот, например, вариант с использованием qemu и специального дистрибутива linux: http://ashishware.com/LinuxOnWindows.shtml.

Добавлено через 1 минуту
Собственно проблема ТС в том, что он не знает(л) какими инструментами можно скомпилировать исполняемый файл под Linux из Windows.

Источник

Понравилась статья? Поделиться с друзьями:

Не пропустите наши новые статьи:

  • компиляция golang для linux
  • компиляция c linux в терминале
  • компиляторы для с на виндовс
  • компиляторы python для windows
  • компиляторы c для linux

  • Операционные системы и программное обеспечение
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии