Программирование на C и C++ в Ubuntu 11.10

Я недавно установил Ubuntu 11.10 и вместе с ним IDE CodeBlocks, и я знаю, что у меня есть библиотеки gcc и std по умолчанию.

Мои вопросы:

  • Есть ли у вас какие-либо советы для нового программиста C++ в Ubuntu?
  • Какие библиотеки я должен получить с самого начала?
  • Действительно хорошая IDE, по которой я скучаю? (YMMV, но я предпочитаю работать в IDE)
  • Какие-нибудь программные блага или ловушки, о которых я должен знать с самого начала?

10 ответов

Решение

Вам не нужна IDE для кодирования на C или C++ в Ubuntu. Вы можете использовать хороший редактор (например, emacs, который вы можете настроить в соответствии с вашими потребностями.).

Несколько советов новичку:

  1. Всегда компилировать с -Wall -Wextra и, возможно, даже с -Werror -pedantic-errors
  2. Порядок аргументов компилятору (gcc или же g++) действительно важны; Рекомендую:

    • общие предупреждения и флаги оптимизации (например, -Wall, -g чтобы получить отладочную информацию, -O, -flto и т. д., или -c чтобы избежать ссылок,...)
    • параметры препроцессора, такие как -I включает в себя и -D определенный символ (или -H понять, какие заголовки включены) и т. д.
    • исходный файл [ы] для компиляции как hello.c или же world.cc
    • если вы хотите связать существующие объектные файлы else.o, добавьте их после исходных файлов
    • опции компоновщика (если уместно), особенно -L библиотека-каталог (и, вероятно, -rdynamic если ваша программа использует плагины с dlopen (3)....)
    • библиотеки (как -lfoo -lbar из библиотек более высокого уровня, таких как libfoo.so в библиотеки более низкого уровня.
    • выходной файл (т.е. созданный исполняемый файл), например -o yourexec,
  3. Всегда исправляйте свой исходный код, пока не получите предупреждение. Доверяйте предупреждениям компилятора и сообщениям об ошибках.

  4. Узнайте, как использовать make и писать просто Makefile-s; посмотрите этот пример.

    Есть другие строители, например, http://omake.metaprl.org/ т. д.

  5. Скомпилируйте ваш код с -g флаг, чтобы компилятор выдавал отладочную информацию; только после отладки вашей программы попросите компилятор оптимизировать (например, с помощью -O1 или же -O2), особенно перед сравнительным тестированием.
  6. Узнайте, как использовать gdb
  7. Используйте систему контроля версий, такую ​​как svn или же git (даже для домашнего задания). В 2015 году я рекомендую GIT более svn
  8. Сделайте резервную копию вашей работы.
  9. Научитесь использовать valgrind для поиска утечек памяти.

NB

Приведенные выше советы не относятся к Ubuntu 11.10, они могут применяться к другим дистрибутивам Linux и другим версиям Ubuntu.

QT Creator - хорошая IDE, которая хорошо работает и с простыми проектами на основе Makefile. Кроме того, как программист C++ вы должны проверить Dia и Dia2Code для автоматической генерации заглушек из UML-диаграмм.

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

Есть ли у вас какие-либо советы для нового программиста C++ в Ubuntu?

  • Изучите некоторые системы сборки, такие как CMake или SCons. Хотя понимание того, как работают make и Makefiles, полезно, существует тенденция перехода от make к более высокоуровневым инструментам, которые также предоставляют функциональность, подобную конфигурированию. Make часто используется для сборки из командной строки, например, с помощью CMake вы можете генерировать Makefile и создавать ваши проекты с использованием make.

  • Используйте систему контроля версий, такую ​​как git или Mercurial. Я также рекомендую хранить те ваши проекты, которые вас интересуют, на каком-то внешнем сервисе, таком как github, хотя бы для целей резервного копирования.

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

Какие библиотеки я должен получить с самого начала?

  • У вас уже есть основная библиотека, которая называется C++ Standard Library. Убедитесь, что вы знаете, что он предоставляет.
  • Повышение покроет большую часть остающихся потребностей кроме GUI.
  • Gtkmm и Qt - это две основные платформы C++ GUI.

Действительно хорошая IDE, по которой я скучаю? (YMMV, но я предпочитаю работать в IDE)

  • Eclipse - долгое время я думал об этом как об IDE только для Java, но на самом деле это превосходная IDE практически для всего (я даже написал в нем свою диссертацию, используя плагин TeXlipse), и поддержка C/C++ улучшается все время. Также CMake может генерировать файлы проекта Eclipse CDT.

  • Qt Creator - еще одна отличная C++ IDE. Это очень быстро и имеет встроенную поддержку CMake

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

  • Из моего опыта наиболее распространенными источниками ошибок в C++ являются указатели и управление ресурсами в случае исключений. Убедитесь, что вы понимаете и используете RAII идиомы и умные указатели.
  • Для более полного списка ловушек и рекомендаций см. Ответы на этот вопрос.

Некоторые советы помимо тех, которые уже упоминались:

  1. Valgrind ваш друг в поиске утечек памяти. Вы также можете использовать valgrind --tool=callgrind и KCacheGrind, чтобы увидеть, где ваша программа тратит время на выполнение.
  2. Если вы собираетесь распространять свою программу, вы должны изучить autotools или cmake. Первый - классический инструмент, немного раздутый, второй - более современный.
  3. Geany - отличная IDE, если вы ищете что-то легкое. В противном случае взгляните на Code::Blocks, Eclipse/CDT и NetBeans.
  4. Поскольку я не уверен, что вы имели в виду под "библиотеками std", я должен упомянуть, что помимо стандартной библиотеки C существует множество функций и интерфейсов POSIX, которые являются общими для большинства *nix-систем, включая Mac OS X.

Eclipse/CDT отлично работает в Ubuntu.

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

РЕДАКТИРОВАТЬ: Как предложил Basile, Makefileи учиться использовать gdb отличные идеи. Есть много аккуратных флагов для использования с gcc также для помощи в отладке вашего кода, его оптимизации, создании инструкций по сборке и т. д.

Если вы знакомы с командной строкой, вы можете использовать редактор, такой как vim и gcc/g++, для компиляции кода, также рекомендуется изучить make svn git.

Если вы не знакомы с командной строкой или предпочитаете использовать пользовательский интерфейс: NetBeans также является хорошей IDE, которую вы можете использовать для разработки на c / C++ и java.

Чтобы установить netbeans: откройте firefox и укажите apt://netbeans. Надеюсь, это вам поможет.

На первых этапах программирования вы не должны использовать IDE, потому что вы лучше поймете, что происходит на обратной стороне:) GCC или G ++ и stdlib будет достаточно. Вы также должны прочитать о Makefiles, SVN(CVS, GIT), Autotools или CMake, чтобы управлять своими проектами. Если вы хотите создавать приложения с графическим интерфейсом, вы должны изучить GTK+ или Qt. Если вам нужна настоящая IDE, попробуйте Eclipse с плагинами C/C++. Удачи:)

Я думаю, что Netbeans это хорошо. Тот же пользовательский интерфейс в Microsoft Windows и Linux. Встроенный контроллер версии и установленный Git по умолчанию. Никакая дополнительная библиотека не добавлена ​​(как опция QT)

Библиотека: я рекомендую вам использовать Boost. Вы можете найти много библиотек в нем. IDE: Eclipse и QTCreator - хорошие IDE, но я думаю, что также очень важно использовать текстовый редактор + makefile. Vim, Emacs или Sublime Text - хороший выбор. Всегда помните, чтобы сделать резервную копию вашего кода.

Другие вопросы по тегам