Введение в использование GCC/make для пользователей Visual Studio

Я разработал инструмент на С++, используя Visual Studio 2010, который я бы хотел развернуть в системах Linux. Сам код запрограммирован полностью независимым от платформы, используя только STL и стандартную библиотеку.

Теперь моя проблема: у меня нет опыта работы с Linux.

Тем не менее, я пытался получить некоторые другие программы, которые я написал для компиляции с использованием GCC, и результаты были загружены с ошибками, которые меня выбрали, и мне потребовалось 3 часа - ужасы!

Отмечая этот опыт, я думаю, что то же самое произойдет, просто намного хуже, если я попытаюсь перенести свой текущий проект в GCC.

Мои вопросы:

  • Что пользователь Visual Studio должен знать, чтобы успешно запустить свою программу на Linux? (мне нужно узнать make?)

  • Знаете ли вы о хорошем источнике, который не охватывает тему программирования GCC/Linux в целом, а конкретно проблема переключения из среды Visual Studio?

Ответы

Ответ 1

Я рекомендую пропустить make вообще, его довольно старую технологию, и вы можете столкнуться с проблемами переносимости при ее использовании. Вместо этого изучите еще одну систему сборки, например CMake http://www.cmake.org/ или SCons http://www.scons.org/

Я сам использую CMake и считаю, что он отличный. Вы пишете очень простые скрипты сборки (вы можете легко начать через час или два), и он генерирует make файлы для вас. Самое большое преимущество заключается в том, что он может генерировать make файлы практически для любой системы компилятора или сборки, которую вы могли бы захотеть. Он может генерировать стандартные make файлы unix, проекты Microsoft Visual С++, проекты XCode, проекты Code:: Blocks, даже проекты KDevelop и Eclipse CDT4.

Я сам не использовал SCons, но я знаю, что он действительно создает вашу программу для вас и запускается на python.

Начало работы в Linux/Unix действительно может означать что угодно. Переход от Visual Studio может означать переход к Eclipse или другой среде IDE, что так же просто, как изучение новой среды IDE, или это может означать, что вы перейдете прямо к оболочке и забудете, что вы когда-либо знали, что такое IDE. Моя личная рекомендация заключается в том, чтобы придерживаться IDE-Eclipse - это отличный отраслевой стандарт и его кросс-платформенный интерфейс (просто получите плагин CDT).

По теме GCC вы, вероятно, не будете очень сильно ссылаться на него, если будете писать сценарии CMake, поскольку CMake будет генерировать make файлы. Простейшими аргументами командной строки являются:

g++ <source-files> -o <output-name> -I <another include directory> -l <library to link to>

в качестве примера:

g++ helloworld.cpp -o world.out -I /usr/include -l mylib

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

./world.out

Обратите внимание, что вывод по умолчанию при вызове g++ (т.е. g++ helloworld.cpp) равен a.out.

И это все, что вам действительно нужно знать! Остальное приходит легко. Вы научитесь любить Unix, и я действительно рекомендую изучить оболочку, даже если вы идете по пути к среде IDE. Это может сделать вашу жизнь намного легче.

EDIT: чтобы переносить вашу программу на Linux и GCC с помощью CMake, вот что вы будете делать:

  • Получить CMake
  • Напишите файл CMakeLists.txt в исходном каталоге (его формат Makefile использует CMake)
  • Вызовите CMake в каталоге. CMake автоматически проанализирует файл CMakeLists.txt и создаст скрипты сборки по вашему выбору.
  • Постройте с помощью любой системы сборки, которую вы использовали. Если вы используете стандартные Unix Make файлы, это означает просто перейти к каталогу сборки и набрать make в оболочку
  • Ваш проект будет построен, и вы сделали!

P.S: Я никогда не узнал нормальный make, хотя он определенно использует его. CMake нашел во мне нетерпеливого пользователя.

Ответ 2

я собирался сказать "man g++", но это руководство очень длинное в строках.

просто введите

g++ main.cpp utility.cpp 

g++ автоматически скомпилирует и свяжет файл main.cpp, utility.cpp в файл с именем a.out введите ./a.out в командную строку для запуска скомпилированного кода.

вам не нужно будет учиться делать, но если вы это сделаете, простые скрипты make возьмут только 4-5 строк кода. Его довольно легко вводить, но на самом деле он очень отличается от пользователя визуальной студии, поэтому он совершенно не приветствуется, если вы помещаете неверный код в свой файл Makefile.

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

oh и здесь g++ info: http://homepages.gac.edu/~mc38/2001J/documentation/g++.html