Вопрос

Я решил оставить свою установку Windows позади и теперь использую Debian в качестве операционной системы по умолчанию.Я всегда кодировал в Windows и, в частности, в Visual Studio.В настоящее время я пытаюсь привыкнуть к компиляции своего кода под Linux.

Хотя мне еще предстоит прочитать много документации, и не ожидайте, что вы, ребята, сделаете это слишком простым для меня, все равно было бы неплохо получить несколько указаний о том, с чего начать.У меня есть несколько конкретных вопросов, но не стесняйтесь предлагать / рекомендовать что-либо еще по этому вопросу.

  • Каковы рекомендуемые руководства по созданию make-файла, как мне скомпилировать из этого makefile (вызываю ли я g ++ сам, использую ли я 'make'?)
  • Глядя на другое программное обеспечение Linux, кажется, что у них почти всегда есть файл "configure".Что именно он делает?Проверяет ли это только, установлены ли необходимые библиотеки, или это нечто большее, чем просто проверка требований?
  • Как мне связать библиотеки и как это связано с моим makefile или параметрами g ++?В Windows я бы скомпилировал библиотеку, включил некоторые заголовочные файлы, сообщил моему компоновщику, какой дополнительный lib-файл связать, и скопировал dll-файл.Как именно этот процесс работает в Linux?
  • Рекомендации для редакторов кода?В настоящее время я использую nano и слышал о vim и emacs, но не знаю, в чем их преимущества друг перед другом.Есть ли какие-то другие, и почему я должен рассматривать их по сравнению с любым из предыдущих трех?Примечание:Я не ищу IDE.

Любая помощь, ссылки на руководства и документацию (предпочтительно те, которые предназначены для начинающих) очень ценятся!

Это было полезно?

Решение

Каковы рекомендуемые руководства по созданию make-файла, как мне скомпилировать из этого makefile (вызываю ли я g ++ сам, использую ли я 'make'?)

Вы создаете из makefile, вызывая "make".И внутри вашего makefile вы компилируете и связываете, используя g ++ и ld.

Глядя на другое программное обеспечение Linux, кажется, что у них почти всегда есть файл "configure".Что именно он делает?Проверяет ли это только, установлены ли необходимые библиотеки, или это нечто большее, чем просто проверка требований?

Это скрипт, обычно используемый для настройки различных функций в зависимости от среды, используемой для сборки.Иногда это просто базовый сценарий оболочки, в других случаях он вызывает такие инструменты, как Autoconf, чтобы узнать, что доступно при сборке.Сценарий "настроить" обычно также является местом, где пользователь может указать различные необязательные элементы, которые необходимо создать или исключить, например, поддержку экспериментальных функций.

Как мне связать библиотеки и как это связано с моим makefile или параметрами g ++?В Windows я бы скомпилировал библиотеку, включил некоторые заголовочные файлы, сообщил моему компоновщику, какой дополнительный lib-файл связать, и скопировал dll-файл.Как именно этот процесс работает в Linux?

ld - это компоновщик GNU.Вы можете вызвать его отдельно (что в конечном итоге будет делать большинство makefile), или вы можете делегировать ему g ++.Параметры, которые вы передаете в g ++ и ld, определяют, где искать включенные заголовки, библиотеки для связывания и как выводить результат.

Рекомендации для редакторов кода?В настоящее время я использую nano и слышал о vim и emacs, но не знаю, в чем их преимущества друг перед другом.Есть ли какие-то другие, и почему я должен рассматривать их по сравнению с любым из предыдущих трех?Примечание:Я не ищу IDE.

Vim и Emacs - это очень гибкие редакторы, которые поддерживают целый ряд различных способов использования.Используйте то, что вам больше нравится, хотя я бы предположил, что вам может понадобиться несколько минимальных вещей, таких как подсветка синтаксиса.

Другие советы

Просто примечание к ответам Мэндика.

Создание make-файлов вручную обычно является очень непереносимым способом сборки в разных вариантах дистрибутива Linux / unix.Существует множество систем сборки для автоматической генерации make-файлов, сборки без make-файлов. Автоинструменты GNU, Смейк, Лепешки, варенье, и т.д.

Также для более подробной информации о настройке.

  • Проверяет доступные компиляторы, библиотеки, системную архитектуру.
  • Проверяет, соответствует ли ваша система соответствующему списку совместимых пакетов.
  • Позволяет вам указать аргументы командной строки для специализации вашей сборки, путь установки, пакеты опций и т.д.
  • Затем Configure генерирует соответствующий Makefile, специфичный для вашей системы.

По чему рекомендуются руководства создание файла make, как мне скомпилировать из этого файла makefile (вызываю ли я g ++ сам, использую ли я 'make'?)

Я научился писать make-файлы, прочитав Руководство по созданию GNU.

Глядя на другое программное обеспечение Linux, они почти всегда, кажется, имеют файл 'configure'.Что именно это делает делает?Проверяет ли это только, установлены ли требуемые библиотеки или это нечто большее, чем просто проверка требований?

Файл конфигурации обычно связан с автоинструменты.Как следует из названия скрипта, он позволяет вам настраивать программное обеспечение.С точки зрения разработчика это в основном означает настройку макросов, которые определяют переменные, какие библиотеки доступны и тому подобное.Он также проверяет доступность библиотек.В конце скрипт генерирует GNU Makefile, который затем вы можете использовать для фактической сборки и установки программного обеспечения.

Система сборки GNU - лишь одна из многих.Мне не особенно нравится система сборки GNU, поскольку она, как правило, работает медленнее других и генерирует уродливый Makefile.Вот некоторые из наиболее популярных из них СМейк, Варенье (Увеличьте Застревание может представлять интерес для C ++) и вафля.Некоторые системы сборки просто генерируют Make-файлы, в то время как другие предоставляют совершенно новую систему сборки.Для простых проектов было бы легко написать Makefile вручную, но "проверку зависимостей" (для библиотек и т.д.) Также пришлось бы выполнять вручную.

Редактировать: Брайан Джанфоркаро также указал на это.

Ваш вопрос немного слишком общий, но вот что я бы порекомендовал:

  • Редактор:популярны vim и emacs.Что важнее всего, как и в случае с большинством инструментов, так это овладеть одним из них.Мне нравится использовать vim, потому что vi (его потомок) доступен везде, но это может быть не очень актуально, особенно если вы остаетесь на Linux.Подойдет любой программный редактор.

  • настроить:если вы не занимаетесь крупными проектами, не утруждайте себя этим.Это кошмар в использовании и отладке.Это имеет смысл только в том случае, если вы намерены распространять свой проект - в таком случае прочтите автобиографию: http://sources.redhat.com/autobook/.Как уже говорилось, есть альтернативы (cmake, scons и т.д.).Я хорошо знаком как с scons, так и с autotools, но я все еще использую make для небольших (пара файлов) проектов.

Относительно общей библиотеки:это почти как Windows, за исключением того, что вы напрямую связываетесь с разделяемой библиотекой - здесь нет .различия между библиотеками lib и .dll в Linux.Например.для одной библиотеки foo с функцией foo:

int foo(void)
{
     return 1;
}

Вы бы построили его следующим образом:

gcc -fPIC -c foo.c -o foo.o
gcc -shared foo.o -o libfoo.so

A main (конечно, в реальной жизни вы помещаете API в заголовочный файл):

int foo(void);

int main(void)
{
    foo();
    return 0;
}

И затем вы связываете это как:

gcc -c main.c -o main.o
gcc main.o -o main -L. -lfoo 

Тот самый - L.здесь, чтобы сказать, что вы хотите, чтобы компоновщик просматривал текущий каталог (в отличие от Windows, в Linux это никогда не делается по умолчанию), -lfoo указывает на ссылку на библиотеку foo.

Итак, чтобы вы начали, я сначала укажу вам на это руководство для makefiles он также охватывает некоторые связующие элементы.
Это всего лишь небольшая информация, которую нам дал профессор информатики моего университета. Я нашел ее очень ясной и краткой, очень полезной.

А что касается IDE, я использую затмение обычно потому, что он также обрабатывает makefile.Не говоря уже о том, что компиляция и стандартный вывод находятся прямо у вас под рукой в программе.
В основном он был предназначен для разработки на Java, но также есть плагин C / C ++!

Я рекомендую эту книгу Искусство программирования в Unix по СОЭ.Это касается выбора редактора, языка программирования и т.д.Это также дает хорошее представление об образе мышления, лежащем в основе программирования в Unix или Linux.

Для редакторов вам, вероятно, понадобится либо Vim, либо Emacs.Они оба разные, и какой из них лучше, зависит скорее от личного вкуса, чем от чего-либо другого.Я использую Vim.Это отлично подходит для быстрого перемещения по коду и внесения изменений.Мне не так сильно нравился Emacs, но многим людям он нравится.Emacs чрезвычайно расширяем и может использоваться для всего - от программы чтения новостей до ide.Попробуйте оба варианта и посмотрите, что вам понравится.

  • Рекомендации для редакторов кода?В настоящее время я использую nano и слышал о vim и emacs, но не знаю, в чем их преимущества друг перед другом.Есть ли какие-то другие, и почему я должен рассматривать их по сравнению с любым из предыдущих трех?Примечание:Я не ищу IDE.

Если вы используете Linux с оконным менеджером (KDE, Gnome и т.д.), вы также можете рассмотреть возможность использования стандартного текстового редактора для вашего оконного менеджера.Основное преимущество, которое он имел бы перед vim / emacs / nano, заключается в том, что он показался бы более знакомым человеку, работающему в среде Windows - редактор, написанный для запуска в оконном менеджере, имеет строку меню, диалоги открытия / сохранения файлов, отмены / повтора и множество других полезных функций, с которыми консольные редакторы, вероятно, не могут сравниться.(Хотя emacs и vim в наши дни довольно сложны, так что кто знает ;-P)

На KDE (который я использую) Я могу порекомендовать KWrite, который является многофункциональным, но довольно простым текстовым редактором с подсветкой синтаксиса;или Kate, который представляет собой более модный текстовый редактор с некоторыми дополнительными функциями:управление сеансами, встроенная панель терминала, автоматический вызов make, и несколько плагинов, включая средство просмотра символов C / C ++.Обычно я использую Kate для своей работы на C ++, когда не хочу возиться с настройкой полноценного IDE-проекта.(К вашему сведению, IDE для KDE - это KDevelop)

Рекомендации для редакторов кода?Я в настоящее время с использованием нано-и я слышал о Vim и Emacs, но не знаю, что преимущества них за друг друга.Есть ли какие-либо другие, и почему я должен рассматривать их по сравнению с любым из предыдущих трех?Примечание:Я не ищу IDE.

Vi и Emacs - это два типичных редактора Unix;если вы настроены на использование текстового редактора, а не IDE, то подойдет один из них или их производные (vim, xemacs и т.д.).Оба поддерживают подсветку синтаксиса и всевозможные функции, либо по умолчанию, либо через расширения.Самое лучшее в этих редакторах - это расширяемость, которую они предлагают;emacs использует различные версии lisp, а vim - свой собственный язык сценариев.

Я лично использую Emacs, поэтому не могу много сказать о Vim, но вы должны быть в состоянии найти много информации об обоих в Интернете.В Emacs есть несколько хороших руководств и ссылок, в том числе этот.

РЕДАКТИРОВАТЬ [декабрь 2014]:Похоже, в последнее время наметилась тенденция к созданию кроссплатформенных и расширяемых редакторов.Это может быть хорошим выбором, если вам нужно что-то меньшее, чем IDE, но более графичное, чем vi / emacs, и ориентированное на несколько платформ.Я рекомендую посмотреть на Возвышенный или Атом;оба они работают в Windows / Linux / Mac и имеют отличные сообщества плагинов и тем.

промежуток между прямым вызовом g ++ и использованием цепочки сборки autotools довольно узок.Освоите autotools, который действительно ближе всего к "проекту", доступному в мире Linux / Open Source.

Для кого-то, пришедшего из Visual Studio, все эти вещи с командной строкой могут показаться непонятными и запутанными.Прежде чем превратиться в любителя bash shell / vim / emacs, сначала попробуйте несколько инструментов на основе графического интерфейса, чтобы у вас было некоторое время на переход...

  • QT 4.5 с мини-IDE QT Creator.Это лучший фреймворк, на несколько световых лет опережающий конкурентов.
  • Eclipse (C ++) - Исходя из моего опыта работы с этим в Windows, я нахожу это поразительным ( это, вероятно, лучшее Java-приложение, когда-либо написанное)
  • KDevelop - Разработка
  • Анюта
  • Если вы используете Delphi, хорошей альтернативой является Lazarus / FreePascal.

Я уверен, что длинношерстные будут насмехаться и утверждать, что vim или emacs предоставляют им лучшую и быструю среду разработки, но разные подходы для разных людей.Кому-то, привыкшему к IDE, потребуется некоторое время для переключения или, возможно, он вообще не захочет переключаться.Несмотря на все их мастерство редактирования, создание приложений с графическим интерфейсом - это, конечно, не работа для инструментов 80x25.Требуются годы, чтобы стать экспертом в области командной строки, это скорее трансформация мировоззрения, чем что-либо еще.

В качестве дополнительного примечания среди правильных ответов здесь..На случай, если вы хотите начать работать в качестве специалиста по Windows, я бы предложил свежий Qt SDK.Здесь вы будете чувствовать себя как дома :-)

Я советую использовать SCons вместо Make, он выполняет ту же работу, но его проще использовать и обрабатывать "из коробки", как создавать динамические библиотеки, зависимости и т.д.Вот это реальный пример из жизни для простой программы

env = Environment()
env.Append(CCFLAGS='-Wall')
env.Append(CPPPATH = ['./include/'])

env.MergeFlags('-ljpeg')
env.ParseConfig("sdl-config --cflags --libs")
env.ParseConfig("curl-config --cflags --libs")
env.ParseConfig("pkg-config cairo --cflags --libs")

env.Program('rovio-pilot', Glob('./src/*.cpp'))

Как текстовый редактор, я доволен jEdit для кодирования, но это дело вкуса.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top