Программирование на C и C++ в Ubuntu 11.10
Я недавно установил Ubuntu 11.10 и вместе с ним IDE CodeBlocks, и я знаю, что у меня есть библиотеки gcc и std по умолчанию.
Мои вопросы:
- Есть ли у вас какие-либо советы для нового программиста C++ в Ubuntu?
- Какие библиотеки я должен получить с самого начала?
- Действительно хорошая IDE, по которой я скучаю? (YMMV, но я предпочитаю работать в IDE)
- Какие-нибудь программные блага или ловушки, о которых я должен знать с самого начала?
10 ответов
Вам не нужна IDE для кодирования на C или C++ в Ubuntu. Вы можете использовать хороший редактор (например, emacs
, который вы можете настроить в соответствии с вашими потребностями.).
Несколько советов новичку:
- Всегда компилировать с
-Wall -Wextra
и, возможно, даже с-Werror -pedantic-errors
Порядок аргументов компилятору (
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
,
- общие предупреждения и флаги оптимизации (например,
Всегда исправляйте свой исходный код, пока не получите предупреждение. Доверяйте предупреждениям компилятора и сообщениям об ошибках.
Узнайте, как использовать
make
и писать простоMakefile
-s; посмотрите этот пример.Есть другие строители, например, http://omake.metaprl.org/ т. д.
- Скомпилируйте ваш код с
-g
флаг, чтобы компилятор выдавал отладочную информацию; только после отладки вашей программы попросите компилятор оптимизировать (например, с помощью-O1
или же-O2
), особенно перед сравнительным тестированием. - Узнайте, как использовать
gdb
- Используйте систему контроля версий, такую как
svn
или жеgit
(даже для домашнего задания). В 2015 году я рекомендую GIT болееsvn
- Сделайте резервную копию вашей работы.
- Научитесь использовать 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 идиомы и умные указатели.
- Для более полного списка ловушек и рекомендаций см. Ответы на этот вопрос.
Некоторые советы помимо тех, которые уже упоминались:
- Valgrind ваш друг в поиске утечек памяти. Вы также можете использовать
valgrind --tool=callgrind
и KCacheGrind, чтобы увидеть, где ваша программа тратит время на выполнение. - Если вы собираетесь распространять свою программу, вы должны изучить autotools или cmake. Первый - классический инструмент, немного раздутый, второй - более современный.
- Geany - отличная IDE, если вы ищете что-то легкое. В противном случае взгляните на Code::Blocks, Eclipse/CDT и NetBeans.
- Поскольку я не уверен, что вы имели в виду под "библиотеками std", я должен упомянуть, что помимо стандартной библиотеки C существует множество функций и интерфейсов POSIX, которые являются общими для большинства *nix-систем, включая Mac OS X.
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 - хороший выбор. Всегда помните, чтобы сделать резервную копию вашего кода.