Программирование на C и С++ на Ubuntu 11.10
Недавно я установил Ubuntu 11.10 и вместе с ним IDE CodeBlocks, и я знаю, что по умолчанию у меня есть gcc и std библиотеки.
Мои вопросы:
- У вас есть подсказки для нового программиста на С++ на Ubuntu?
- Любые библиотеки, которые я должен получить с самого начала?
- Действительно ли хорошая IDE мне не хватает? (YMMV, но я предпочитаю работать в IDE).
- Любое программирование или ловушки, о которых я должен знать с самого начала?
Ответы
Ответ 1
Вам не нужна IDE для кода на C или С++ на Ubuntu. Вы можете использовать хороший редактор (например, emacs
, который вы можете настроить в соответствии с вашими потребностями.).
Несколько советов для новичков:
- Всегда компилируйте с помощью
-Wall -Wextra
и, возможно, даже с -Werror -pedantic-errors
-
Порядок аргументов компилятору (gcc
или g++
) действительно важен; Я рекомендую:
- общие предупреждения и флаги оптимизации (например,
-Wall
, -g
, чтобы получить информацию об отладке, -O
, -flto
и т.д., или -c
, чтобы избежать связывания,...)
- параметры препроцессора, такие как
-I
include-dir и -D
определенный символ (или -H
, чтобы понять, какие заголовки включены) и т.д.
- исходный файл [s] для компиляции как
hello.c
или world.cc
- если вы хотите связать существующие объектные файлы
else.o
, добавьте их после исходных файлов
- Опции компоновщика (если это необходимо), особенно
-L
library-dir (и, вероятно, -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.
Ответ 2
QT Creator - хорошая среда разработки, которая хорошо работает и с простыми проектами на основе Makefile. Кроме того, в качестве программиста на С++ вы должны проверить Dia и Dia2Code для автоматической генерации заглушек на диаграммах UML.
Ответ 3
Поскольку вы задаете несколько вопросов, я отвечу каждый отдельно.
У вас есть какие-либо советы для нового программиста на С++ на Ubuntu?
-
Изучите некоторую систему сборки, такую как CMake или SCons. Хотя понимание того, как make и работа Makefiles полезна, есть тенденция отходить от make к более высокоуровневым инструментам, которые также обеспечивают настроить как. Make часто используется для сборки командной строки, например, с помощью CMake вы можете создавать Makefile и создавать свои проекты с помощью make.
-
Используйте систему управления версиями, такую как git или Mercurial. Я также рекомендую сохранить те ваши проекты, о которых вы заботитесь, на каком-то внешнем сервисе, например github, по крайней мере, для целей резервного копирования.
-
Обратите внимание на предупреждения компилятора, но имейте в виду, что предупреждения содержат только часть возможных ошибок. Более полную картину можно получить, используя инструменты статического анализа и инструменты для динамического анализа, такие как Valgrind.
Любые библиотеки, которые я должен получить с самого начала?
- У вас уже есть главный, который называется Стандартная библиотека С++. Убедитесь, что вы знаете, что он предоставляет.
- Boost будет охватывать большинство оставшихся потребностей, кроме GUI.
- Gtkmm и Qt являются двумя основными платформами графического интерфейса С++.
Отличная IDE, которой я не хватает? (YMMV, но я предпочитаю работать в среде IDE)
-
Eclipse - долгое время я думал об этом как о Java только IDE, но на самом деле это отличная среда для почти чего угодно (я даже написал диссертацию на эту тему, используя TeXlipse плагин) и поддержка C/С++ постоянно совершенствуется. Также CMake может генерировать файлы проекта Eclipse CDT.
-
Qt Creator - еще одна отличная среда С++. Он очень быстрый и имеет встроенную поддержку CMake.
Любые программные блага или ловушки, о которых я должен знать с самого начала?
- Из моего опыта наиболее распространенными источниками ошибок на С++ являются указатели и управление ресурсами в случае исключений. Убедитесь, что вы понимаете и используете RAII и умные указатели.
- Для получения более полного списка ловушек и рекомендаций см. ответы на этот вопрос.
Ответ 4
Eclipse/CDT отлично работает на Ubuntu.
Ответ 5
Некоторые подсказки, кроме уже упомянутых:
- Valgrind - ваш друг в поиске утечек памяти. Вы также можете использовать
valgrind --tool=callgrind
и KCacheGrind, чтобы узнать, где ваша программа тратит время на выполнение.
- Если вы собираетесь распространять свою программу, вы должны изучить autotools или cmake. Первый - это классический инструмент, немного раздутый, второй - более современный.
- Geany - отличная среда разработки, если вы ищете что-то легкое. В противном случае взгляните на Code:: Blocks, Eclipse/CDT и NetBeans.
- Поскольку я не уверен, что вы имели в виду под "std libraries", я должен упомянуть, что помимо стандартной библиотеки C существует много функций POSIX и интерфейсов, которые являются общими для большинства * nix-систем, включая Mac OS X.
Ответ 6
Boost предоставляют целую кучу библиотек, которые обычно используются и могут пригодиться. Во всяком случае, я не совсем уверен, что этот вопрос слишком хорошо подходит для платы Q & A.
EDIT: Как предложил Базиле, Makefile
и обучение использованию gdb
- отличные идеи. Существует множество аккуратных флагов для использования с gcc
, чтобы помочь отлаживать ваш код, оптимизировать его, создавать инструкции по сборке и т.д.
Ответ 7
Я думаю, что Netbeans - это хорошо. Тот же интерфейс в Microsoft Windows и Linux. Встроенный контроллер версии и установил Git по умолчанию.
Никакая дополнительная библиотека не добавлена (как oposit QT)
Ответ 8
На первых этапах программирования вы не должны использовать IDE, потому что лучше поймете, что происходит на заднем плане:) GCC или g++ и stdlib будут достаточными. Вы также должны прочитать о Makefiles, SVN (CVS, GIT), Autotools или CMake для управления вашими проектами. Если вы хотите создавать приложения с графическим интерфейсом, вы должны изучить GTK + или Qt. Если вам нужна настоящая IDE для ваших нужд, попробуйте Eclipse с плагинами C/С++. Удачи:)
Ответ 9
Если вы знакомы с командной строкой, вы можете использовать редактор, такой как vim и gcc/g++, для компиляции вашего кода, а также изучение svn git.
Если вы не знакомы с командной строкой или предпочитаете использовать пользовательский интерфейс: NetBeans также является хорошей средой разработки, которую вы можете использовать для разработки в c/С++ и java.
Чтобы установить netbeans: откройте firefox и укажите на apt://netbeans
Надеюсь, это поможет вам.
Ответ 10
Библиотека: рекомендую использовать Boost. В нем можно найти много библиотек.
IDE: Eclipse и QTCreator - хорошие IDE, но я думаю, что очень важно использовать текстовый редактор + makefile. Vim, Emacs или Sublime Text - хороший выбор.
Всегда помните о резервном копировании кода.