Компилятор линукс для windows

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

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

Читайте также:  Браузеры для windows 10 64 bit vivaldi

Скачайте исходные файлы с помощью команды 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 и документацию. Либо вы можете обратиться к спискам рассылки. Если у вас возникли проблемы с выполнением действий, описанных выше, то, пожалуйста, расскажите об этом в комментариях.

Можно ли скомпилировать из-под Windows прогу для Linux?

Есть код — console application, используется только стандартная библиотека.
Существует ли компилятор, который работает на Windows-машинах и может скомпилировать программу для Linux-машины? Если существует, то как называется 😉

Параллельный вопрос — под Linux некий аналог lib-файла скомпилировать, чтобы потом другой мог его использовать при написании linux-приложения — это возможно? Если да, то в каком компиляторе можно сделать это из-под виндов?

19 ответов

Для этих целей существуют эмуляторы Unix. Наиболее известные — CygWin, UWin, MinGW.
У нас на работе, например, CygWin используют.

Если нужен только компилятор, то вам, наверное, MinGW подойдет.

Цитата (см. первую ссылку):

Ага, ответ пришел сам: MinGW — это просто компилятор.

Однако, такой вопрос: MinGW умеет делать dll-файлы, но мне бы аналог lib-файла, через который можно было бы получить не только функцию, но и класс.
Есть ли такая возможность?
В описании MinGW пока не могу найти.

Для этих целей существуют эмуляторы Unix. Наиболее известные — CygWin, UWin, MinGW.
У нас на работе, например, CygWin используют.

А вообще, в инете много статей на эту тему. Думаю, вы сами сможете найти то, что вам надо, если покопаетесь немного.
Вот ссылки, которые удалось найти в течение 2-3 минут:
http://www.openproj.ru/50/410/?IB2XP. d4a2ddf955d8d8
http://e-zine.excode.ru/online/2/cyg. n_windows.html
http://ru.wikipedia.org/wiki/Cygwin

Ага. Вы бы ему ещё посоветовали поставить виртуальную машину,туда поставить Линух и там запускать свою прогу))))) Я думаю не в тему это.
У меня был личный опыт. Написали как-то прогу под линух,ну и со временем кое-какие серваки стали переделывать с винды на Solaris. Решили перекомпилить
то ПО под соляру. Прога стала работать раз в 9 медленне. Вы думаете это соляра тормоз. нее. Solaris в списках Oracle находится в числе флагмановых ОС, просто Linux работает с нитями ,а соляра этого делать не умеет. Пришлось немного покапаться и переработать это дело под солярку))))
Так называетмые «кросс-компиллеры», мда. не знаю какова у Вас будет после всего этого скорость, ну и с документухой возиться не надоест?? Винда и линух. это совершенно разнейшие вещи! Я бы сделал не так. Я бы немного покапался и переделал всё под винду, алгоритм же остаётся тот же, а вот при написании на С/С++ библиотеки для каждой платформы свои. Немножко работы, включение библиотек винды ,небольшая доработка и вуаля и сивупле)))
[/LEFT]

Читайте также:  Batch файлов системы windows

Компилируем и запускаем программы C, C++ в Linux

Это краткое руководство объясняет, как компилировать и запускать программы на Си/Си++ в операционной системе GNU/Linux.

Если вы студент или новый пользователь Linux, который переходит с платформы Microsoft, то вам может быть интересно, как запускать программы на Си или Си++ в дистрибутиве Linux. Мы должны понимать, что компиляция и запуск кода на платформах Linux немного отличается от Windows.

Установка необходимых инструментов

Как вы, наверное, уже понимаете, для запуска кода нужно установить необходимые инструменты и компиляторы для работы. Ниже мы опишем как установить все инструменты разработки в Linux.

Для работы и тестирования у нас должен быть сервер с Linux. Лучший вариант — это VPS. В зависимости от географии проекта обычно выбирают две страны для серверов — VPS США и VPS России.

В этом кратком руководстве мы обсудим, как установить средства разработки в такие дистрибутивы Linux, как Arch Linux, CentOS, RHEL, Fedora, Debian, Ubuntu, openSUSE и др.

Эти средства разработки включают в себя все необходимые приложения, такие как компиляторы GNU GCC C/C++, make, отладчики, man-страницы и другие, которые необходимы для компиляции и сборки нового программного обеспечения и пакетов.

Инструменты разработчика могут быть установлены как по отдельности, так и все сразу. Мы собираемся установить все сразу, чтобы нам было намного проще работать.

Установка в Arch Linux

Для установки средств разработки в Arch Linux и его дистрибутивов, таких как Antergos, Manjaro Linux, просто запустите:

Вышеуказанная команда установит следующие пакеты в ваши системы на базе Arch:

Просто нажми ENTER, чтобы установить их все.

Если вы хотите установить пакет в определенную группу пакетов, просто введите его номер и нажмите ENTER, чтобы продолжить установку.

Установка средств разработки в RHEL, CentOS

Для установки средств разработки в Fedora, RHEL и его клонах, таких как CentOS, Scientific Linux, выполните следующие команды как пользователь root:

Вышеуказанная команда установит все необходимые инструменты разработчика, например:

  1. autoconf
  2. automake
  3. bison
  4. byacc
  5. cscope
  6. ctags
  7. diffstat
  8. doxygen
  9. elfutils
  10. flex
  11. gcc/gcc-c++/gcc-gfortran
  12. git
  13. indent
  14. intltool
  15. libtool
  16. patch
  17. patchutils
  18. rcs
  19. subversion
  20. swig

Установка инструментов разработки в Debian, Ubuntu и дистрибутивы

Для установки необходимых инструментов разработчика в системах на базе DEB, запустите:

Эта команда предоставит все необходимые пакеты для настройки среды разработки в Debian, Ubuntu и его дистрибутивов.

  1. binutils
  2. cpp
  3. gcc-5-locales
  4. g++-multilib
  5. g++-5-multilib
  6. gcc-5-doc
  7. gcc-multilib
  8. autoconf
  9. automake
  10. libtool
  11. flex
  12. bison
  13. gdb
  14. gcc-doc
  15. gcc-5-multilib
  16. and many.

Теперь у Вас есть необходимые средства разработки для создания программного обеспечения в Linux.

Скрипт Mangi

Если Вам не нравится метод установки средств разработки выше, есть также скрипт под названием «сценарий манги» (mangi), доступный для легкой настройки среды разработки в DEB-системах, таких как Ubuntu, Linux Mint и других производных Ubuntu.

Читайте также:  Windows 10 собирает все данные

После свежей установки Ubuntu возьмите этот скрипт из репозитория GitHub, сделайте его исполняемым и начните установку всех необходимых инструментов и пакетов для настройки полной среды разработки. Вам не нужно устанавливать инструменты один за другим.

Этот скрипт установит следующие среды разработки и инструменты на вашу систему Linux:

  1. Node.js
  2. NVM
  3. NPM
  4. Nodemon
  5. MongoDB
  6. Forever
  7. git
  8. grunt
  9. bower
  10. vim
  11. Maven
  12. Loopback
  13. curl
  14. python
  15. jre/jdk
  16. gimp
  17. zip unzip and rar tools
  18. filezilla
  19. tlp
  20. erlang
  21. xpad sticky notes
  22. cpu checker
  23. kvm acceleration
  24. Calibre Ebook Reader (I often use it to read programming books
  25. Dict – Ubuntu Dictionary Database and Client (CLI based)

Сначала установите следующее:

Скачайте скрипт манги, используя команду:

Извлеките загруженный архив:

Вышеуказанная команда распакует zip-файл в папку под названием mangi-script-master в вашей текущей рабочей директории. Перейдите в каталог и сделайте скрипт исполняемым, используя следующие команды:

Наконец, запустите скрипт с помощью команды:

Пожалуйста, имейте в виду, что этот скрипт не полностью автоматизирован. Вам необходимо ответить на ряд вопросов «Да/Нет» для установки всех инструментов разработки.

Установка инструментов разработки в openSUSE/SUSE

Для настройки среды разработки в openSUSE и SUSE enterprise выполните следующие команды от имени root пользователя:

Проверка установки

Теперь проверим, были ли установлены средства разработки или нет. Для этого запустите:

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

Настройка среды разработки

Скрипт под названием ‘mangi’ поможет вам настроить полное окружение в системах на базе Ubuntu.

Еще раз, после установки необходимых средств разработки проверить их можно с помощью одной из следующих команд:

Эти команды покажут путь установки и версию компилятора gcc.

Компиляция и запуск программ C, C++

Сначала посмотрим, как скомпилировать и запустить простую программу, написанную на языке Си.

Компиляция и запуск программ на C

Напишите свой код/программу в любимом редакторе CLI/GUI.

Я собираюсь написать свою программу на Си с помощью редактора nano.

Примечание. Вам необходимо использовать расширение .c для программ на Си или .cpp для программ на Си++.

Скопируйте/вставьте следующий код:

Нажмите Ctrl+O и Ctrl+X для сохранения и выхода из файла.

Чтобы скомпилировать программу, запустите:

Если в вашем коде/программе есть синтаксические или семантические ошибки, они будут отображены. Сначала необходимо их исправить, чтобы двигаться дальше. Если ошибки нет, то компилятор успешно сгенерирует исполняемый файл ostechnix в текущем рабочем каталоге.

Наконец, запустите программу с помощью команды:

Вы увидите вывод, как показано ниже:

Чтобы скомпилировать несколько исходных файлов (например, source1 и source2) в исполняемый файл, запустите:

Для разрешения предупреждений, необходима отладка символов на выходе:

Скомпилировать исходный код в инструкции ассемблера:

Скомпилировать исходный код без связывания:

Вышеприведенная команда создаст исполняемый файл под названием source.o.

Если ваша программа содержит математические функции:

За более подробной информацией обращайтесь к man-страницам (страницы руководства).

Компиляция и запуск программ на C++

Напишите вашу C++ программу в любом редакторе по вашему выбору и сохраните ее с расширением .cpp.

Пример простой C++ программы:

Чтобы скомпилировать эту программу на C++ в Linux, просто запустите:

Если ошибок не было, то можно запустить эту Си++ программу под Linux с помощью команды:

В качестве альтернативы мы можем скомпилировать приведенную выше программу на C++, используя команду «make«, как показано ниже.

Вы заметили? Я не использовал расширение .cpp в вышеприведенной команде для компиляции программы. Нет необходимости использовать расширение для компиляции Си++ программ с помощью команды make.

Запустите, используя команду:

За более подробной информацией обращайтесь к man-страницам.

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