Подтвердить что ты не робот

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

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

Мои вопросы:

  • У вас есть подсказки для нового программиста на С++ на Ubuntu?
  • Любые библиотеки, которые я должен получить с самого начала?
  • Действительно ли хорошая IDE мне не хватает? (YMMV, но я предпочитаю работать в IDE).
  • Любое программирование или ловушки, о которых я должен знать с самого начала?
4b9b3361

Ответ 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 - хороший выбор. Всегда помните о резервном копировании кода.