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

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

Ответ 1

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

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 и любить его, как я.

Ответ 2

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

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

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

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

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

Ответ 3

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

Ответ 4

  • г ++

  • Emacs

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

  • gdb-mode в emacs (тип M-X gdb)

  • сделать

Ответ 5

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

Ответ 6

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

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

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

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

Ответ 7

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

Ответ 8

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

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

Ответ 9

g++ и make

Ответ 10

Вам нужна стандартная toolchain + IDE.

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

aptitude install build-essential

Интересная часть - об IDE.

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

Какой IDE выбрать - это просто вопрос вкуса. На SOF вы найдете много потоков. Вот постоянная ссылка на вопрос, какая С++ IDE может быть "лучшей": С++ IDE для Linux.

Ответ 11

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

Ответ 12

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

Ответ 13

  • НКА
  • GHC
  • Vim
  • Cmake
  • Cscope
  • GDB
  • Valgrind
  • Трассирование
  • git

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

Ответ 14

  • Bash
  • Vim
  • Убедитесь,
  • g++
  • GDB
  • Valgrind
  • дргоЕ
  • SVN

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

Ответ 15

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

Ответ 16

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

Ответ 17

Anjuta - хорошая идея, которая делает Linux С++-dev довольно приятным.

Ответ 18

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

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

Ответ 19

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

Ответ 20

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

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

Ответ 21

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

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

Ответ 22

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

Ответ 23

Проект инкубации Eclipse Linux Tools интегрирует инструменты разработки C/С++. Это плагин GUI для интеграции таких инструментов, как Valgrind, GProf, GCov, SystemTap и т.д. В среду IDE Eclipse С++.

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

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

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

См. также: Обновленная информация об установке и использовании инструментов Eclipse Linux Нажмите здесь

Ответ 24

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