Как скомпилировать linux под windows

/dev/head

Компиляция программы из Linux в Windows при помощи Сygwin, GCC и Eclipse CDT

Недавно мне срочно понадобилось установить небольшое написанное мною консольное приложение на машину с Windows которое изначально предназначаось для Linux. При разработке я использовалал среду Eclipse CDT. Особенность приложения было в том, что оно работало с com портом при помощи стандартных средств из Linux (termios.h). Сначала я обнаружил, что под windows используются немного другие средства работы с последовательным интерфейсом изучать который не было ни какого интереса. Я немного поразмыслил и вспомнил, что есть такая штука как Cygwin и в его компонентах есть специальная версия компилятора gcc которая может компилировать приложения использующие POSIX api как win32 приложения.

И так что мы имеем. Проект из Eclipse c исходниками на C (Си). Для начала нужно установить Cygwin c GCC. Качаем его с сайта проекта http://cygwin.org/ (Прямая ссылка). Запускаем setup.exe, выбираем зеркало и следующие обязательные пакеты:

Установку Cygwin устанавливаем в каталог c:/cygwin

После установки добавляем в системную. переменную окружения Path путь к Cygwin:

Далее, качаем с сайта http://www.eclipse.org/ (прямая ссылка) Eclipse с CDT плагином. Распаковываем его куда-нибудь(например в корень диска C:) Кидаем ярлык на рабочий стол. Закускаем Eclipse и импортируем наш проект:

После импорта проекта настраиваем пути к компилятору и Includes.

Нажимаем правой кнопкой на проекте и выбираем — Properties:

Сначала я выбрал правильную кодировку моего проекта:

Далее выбирал соответствующий Cygwin GCC toolchain

Если все выбрано правильно, то должен появиться соответствующие Includes

Теперь выбираем в Build configuration — Release:

Также хочу отметить в Windows существует понятие оконного и консольного приложения для того чтобы сорать оконное, я добавил ключ -mwindows для линковщика, т.к. по умолчанию собирается консольное приложение(ключ -mconsole) и при запуске мигает консоль. Можно запускать компиляцию.

Возможные проблемы:

Подобные ошибки могут возникать, либо по тому что вы не выбрали все нужные компонены при установке Cygwin, либо у вас не прописан путь к Cygwin/bin в переменной окружения Path.

Как с помощью 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.

Читайте также:  Реестр windows другом диске

У проект 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 и т. д. с тем, чтобы выяснить, почему сборка не проходит.

Читайте также:  Запуск фоновой команды linux

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

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

Когда команда make завершить работу, у вас в каталоге html-xml-utils-6.7 будут все файлы .exe.

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

Как с помощью 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;» найдите ее и пометьте для установки.

Читайте также:  Буфер обмена windows где находится

Нажмите кнопку 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 просто перенесет следующий двоичный файл в этот список.

Когда команда make завершить работу, у вас в каталоге html-xml-utils-6.7 будут все файлы .exe.

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

Оцените статью