Какие инструменты вы используете для разработки приложений на C++ в Linux?

Я разрабатываю приложения на C++ в среде Linux. Инструменты, которые я использую каждый день, включают Eclipse с подключаемым модулем CDT, gdb и valgrind.
Какие инструменты используют другие люди? Есть ли что-нибудь для Linux, что может соперничать с гладкостью Microsoft Visual Studio?

Ответов (24)

g ++ и сделайте

Anjuta - отличная идея, которая также делает разработчика Linux C++ весьма приятным.

При разработке приложений на C++ для Linux я предпочитаю использовать набор инструментов cmdline. Vim расширен множеством плагинов. Gdb с ddd, valgrind, libefence и SCons (automake - это боль ... вы знаете где)

Я использую Eclipse + CDT в Windows и Cygwin + g ++ для кросс-компиляции для Linux.

(Кросс-компиляторы создаются с использованием crossstool, красивого набора сценариев для создания кросс-компиляторов)

Я использую подключаемый модуль NetBeans C++, он великолепен и интегрируется с CVS и SVN. Со стороны управления проектами тоже очень хорошо. Я был готов к работе за считанные минуты. Это впечатляющая IDE, но будучи Java, она может быть немного медлительной.

emacs, cmake, gdb, git, valgrind. Он может быть не таким привлекательным, как Visual Studio, но работает хорошо, и его легко добавить с помощью сценариев bash или emacs lisp.

Прямо сейчас я использую Qt Creator . Он кроссплатформенный и довольно хорошо интегрируется с Qt, хотя (конечно) у вас есть возможность создать отдельное приложение.

  • Баш
  • Vim
  • Делать
  • G ++
  • GDB
  • Валгринд
  • Gprof
  • svn

Никогда не было видно графического интерфейса, кроме хорошего терминала с поддержкой вкладок; храните код, отладчик, вывод и т. д. в отдельных окнах и вкладках назад и вперед очень быстро.

Я использую все, что есть в системе. Я предпочитаю Eclipse CDT в качестве редактора и g ++ в качестве компилятора. Однако, если eclipse не подходит, я использую vi, что тоже нормально.

FlexeLint для статического анализа кода, помимо упомянутого выше:
Eclipse с CDT, gcc, make, gdb, valgrind, bash shell.
Контроль версий исходного кода: Clearcase или git, в зависимости от проекта.

Вам понадобится стандартный набор инструментов + IDE.

О стандартной цепочке инструментов сказать особо нечего. Просто установите, например, на Ubuntu / Debian через

aptitude install build-essential

Интересная часть касается IDE.

Мое личное впечатление таково, что в настоящее время - в 21 веке - vi / emacs / make / autotools / configure недостаточно для разработки программных проектов, превышающих определенный размер (... и да, пожалуйста, пожалуйста, обвините меня в ереси наследия .. .).

Какую IDE выбрать - дело вкуса. Вы найдете множество тем на SOF. Вот постоянная ссылка, в которой обсуждается, какая C++ IDE может быть «лучшей»: C++ IDE для Linux .

g ++, конечно, но также Code :: Blocks, которая является абсолютно фантастической межплатформенной IDE (Win32, * nix, Mac).

Я использую ночные (в последнее время, скорее, еженедельные) сборки из SVN. В нем есть почти все навороты, которые можно ожидать от современной IDE. Это действительно фантастический проект с открытым исходным кодом.

Кроме того, в Linux вы получаете удовольствие от использования Valgrind, который, вероятно, является лучшим инструментом отслеживания памяти (он делает и другие вещи), который можно купить за деньги. И это бесплатно :) С легкостью отслеживайте утечки памяти и многое другое.

И это намного больше! Linux - такая отличная платформа для разработчиков :)

(править) Только что понял, что вы упомянули Valgrind в своем вопросе, глупо, что я прочитал его слишком быстро.

Я считаю, что KDevelop ближе всего к Microsoft Visual Studio. Вы получаете почти все (кроме, к сожалению, отладчика VS, который действительно является убийцей). Он уже сформирован, и его развитие идет довольно быстро и многообещающе.

На самом деле он реализует кое-что, чего вы даже не увидите в VS. Например, откройте файл заголовка и файл cpp в режиме вертикальной плитки и синхронизируйте курсор в обоих, то есть: когда вы выбираете прототип функции, вы всегда видите его реализацию справа.

KDevelop - это проект KDE, но работающий на Gnome. Anjuta - аналогичный проект в Gnome, но я считаю его непригодным для реальной работы. Для остальной части стека gcc делает valgrind ddd (IDE gdb) и python для написания сценария моего кода.

Если вы согласны, попробуйте другой подход, отличный от VS IDE. Вы можете попробовать vim. Но привыкание к нему занимает много времени.

Eclipse CDT действительно хорош. Мне все еще приходится время от времени прибегать к Emacs, но мне очень нравится индексация, деревья вызовов, деревья типов, поддержка рефакторинга (я думал, что это не похоже на рефакторинг Java) и т. Д. Подсветка синтаксиса довольно эффективна, если вы ее настраиваете (может иметь отдельные цвета для локальных переменных, аргументов функций, методов и т. д.). Автозавершение кода тоже очень удобно. Я в основном использовал Eclipse 3.3, но и 3.4 тоже отлично.

Кроме того, в основном я использую это для довольно большого проекта (~ 1e6 sloc) - это может быть излишним для игрушечных проектов.

Когда я разрабатывал код C++ для linux, я использовал emacs как редактор и как интерфейсную часть gdb. Позже моя компания купила SlickEdit для всех программистов, это хорошая IDE, возможно, не на одном уровне с Visual Studio. Мы широко использовали gdb, время от времени применяя valgrind и gprof. Я настоятельно рекомендую использовать язык сценариев в дополнение к C++ в повседневных задачах. Я перешел от PERL к python и к текущему рубину. Все они выполняют свою работу и имеют сильные стороны, а C++ - слабые места. И, конечно же, в вашем распоряжении есть все команды оболочки. Я ежедневно использую sort (), uniq (), awk и т. Д. И еще одна рекомендация - ack , преемник grep.

Я другой за KDevelop. Имеет очень разнообразный набор инструментов. Я не очень хорошо знаком с VS и есть ли у него интегрированный консольный доступ через его интерфейс, но KDevelop может позволить вам запускать консоль внутри IDE, что я всегда нахожу очень полезным. Вы всегда можете попробовать Netbeans теперь, когда он имеет полную поддержку C/C++.

Помимо этого, я хорошо использую gdb и его версию ddd на основе графического интерфейса пользователя для устранения проблем с кодом или других ошибок. Для одноразовых программ, таких как другие, которые уже были опубликованы, я использую g ++ в терминале и делаю для некоторых более крупных проектов.

Eclipse CDT для редактирования, SVN для управления версиями, SCons для управления сборкой, CruiseControl для автоматизированных сборок и проприетарная среда модульного тестирования.

  • g ++

  • emacs

  • командная строка bash

  • gdb-mode в emacs (введите MX gdb)

  • делать

  • GCC
  • GHC
  • Vim
  • Cmake
  • cscope
  • GDB
  • Валгринд
  • Strace
  • мерзавец

Есть ли что-нибудь еще, что вам может понадобиться?

Я использую кучу окон терминала. У меня vim работает с интересными исходными файлами, вывод make и g ++ на другом для ошибок компилятора или сеанс gdb для ошибок времени выполнения. Если мне нужна помощь в поиске определений, я запускаю cscope и использую поддержку cscope vim, чтобы прыгать.

Eclipse CDT - мой второй выбор. Он красивый, но огромный, неуклюжий и медленный по сравнению с vim.

Использование окон терминала и vim очень гибкое, потому что мне не нужно носить с собой 400 МБ Java, я могу использовать сеансы SSH из любого места.

Я использую valgrind, когда мне нужно найти проблему с памятью.

Я использую, strace чтобы наблюдать за тем, что делает мое программное обеспечение на уровне системного вызова. Это позволяет мне очистить действительно глупый код, который вызывает time(0) четыре раза подряд или делает слишком много вызовов poll() или неблокирует, read() или такие вещи, как вызов read() сокета для чтения 1 байта за раз. (Это супер неэффективно и лениво!)

Я использую objdump -d для проверки машинного кода, особенно для внутренних циклов, чувствительных к производительности. Вот как я нахожу такие вещи, как медленность оператора индекса массива для строк по сравнению с использованием итераторов.

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

Обновление: я обнаружил, что perf работает лучше, чем oprofile. По крайней мере, в Linux. Научитесь использовать perf и полюбите его так же, как и я.

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

  • CMake
  • vim
  • g ++
  • kdevelop (ежедневно компилируется из SVN!)
  • Mercurial, когда я могу, SVN, когда мне нужно, git, когда другого выбора действительно нет (участие в проекте, который его использует)
  • Valgrind

Первым выбором Mi всегда будет emacs с большим количеством плагинов: ecb дает несколько буферов для навигации по папкам, gdb, svn или интеграция с git ... Это мой первый вариант с использованием Python.

Как второй вариант, Netbeans с подключаемым модулем C++, очень простой и довольно мощный, но, на мой взгляд, слишком тяжелый.

Инкубационный проект Eclipse Linux Tools объединяет инструменты разработки C/C++. Это подключаемый модуль с графическим интерфейсом для интеграции таких инструментов, как Valgrind, GProf, GCov, SystemTap и т. Д., В Eclipse C++ CDT IDE.

Поиск Eclipse Helios IDE для разработчиков C/C++ Linux (включает компоненты Incubating), (120 МБ)

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

Обратите внимание, что это инкубационный проект, поэтому вы можете ожидать, что со временем поддержка станет только лучше.

См. Также: Для получения обновленной информации об установке и использовании инструментов Eclipse для Linux щелкните здесь