Я разрабатываю приложения на C++ в среде Linux. Инструменты, которые я использую каждый день, включают Eclipse с подключаемым модулем CDT, gdb и valgrind. Какие инструменты используют другие люди? Есть ли что-нибудь для Linux, которое может соперничать с гладкостью Microsoft Visual Studio?
Позор мне, как чистому разработчику UNIX, но я должен признать, что Microsoft Visual Studio - одна из лучших IDE, доступных для разработки на C++.
@Clayton: такой вопрос может быть проблематичным. Как вы решите, какой ответ принять, например который правильный"?
Просто прочтите последнюю часть как «что может соперничать с болезнью Microsoft Visual Studio?» ;) (согласовано)





g ++ и сделайте
Я полагаю, вы редактируете с помощью «кошки»?
Нет, я использую подключение к удаленному рабочему столу с моим компьютером с Windows и использую eclipse для написания кода, а затем копирую и вставляю его в g ++
Я надеюсь ты шутишь o_O
А как насчет намагниченной иглы и устойчивой руки?
Вау, этот ответ глупый. Я прошу прощения. Я использую Qt Creator, vim, Eclipse и Microsoft Visual Studio.
Я считаю, что KDevelop ближе всего к Microsoft Visual Studio. Вы получаете почти все (кроме, к сожалению, отладчика VS, который действительно является убийцей). Он уже сформирован, и его развитие идет довольно быстро и многообещающе.
На самом деле он реализует кое-что, чего вы даже не увидите в VS. Например, откройте файл заголовка и файл cpp в режиме вертикальной плитки и синхронизируйте курсор в обоих, то есть: когда вы выбираете прототип функции, его реализация всегда находится справа от вас.
KDevelop - это проект KDE, но работающий на Gnome. Anjuta - аналогичный проект в Gnome, но я считаю его непригодным для реальной работы. Для остальной части стека gcc делает valgrind ddd (IDE gdb) и python для написания сценария моего кода.
Если вы согласны, попробуйте другой подход, отличный от VS IDE. Вы можете попробовать vim. Но привыкание к этому занимает много времени.
QT имеет новую IDE, которая выглядит конкурентом Visual Studio.
g ++, конечно, но также Код :: Блоки, которая является абсолютно фантастической межплатформенной IDE (Win32, * nix, Mac).
Я использую ночные (в последнее время, скорее, еженедельные) сборки из SVN. В нем есть почти все навороты, которые можно ожидать от современной IDE. Это действительно фантастический проект с открытым исходным кодом.
Кроме того, в Linux вы получаете удовольствие от использования Валгринд, который, вероятно, является лучшим инструментом отслеживания памяти (он делает и другие вещи), который можно купить за деньги. И это бесплатно :) С легкостью отслеживайте утечки памяти и многое другое.
И это намного больше! Linux - такая отличная платформа для разработчиков :)
(править) Только что понял, что вы упомянули Valgrind в своем вопросе, глупо, что я прочитал его слишком быстро.
Я пробовал Code :: Blocks, но сразу не увидел в нем ничего особенного, особенно по сравнению с Eclipse. Можете ли вы рассказать о том, что вам в нем нравится?
Я считаю, что Eclipse слишком тяжелый. Мне нравится иметь возможность скомпилировать исходный файл без необходимости быть в проекте. Мне нравится, что файлы проекта легкие и ненавязчивые, в отличие от Eclipse, где они являются драконовскими диктаторами. Мне нравится Source Control в Eclipse, но C :: B это понимает :)
Анджута - отличная идея, которая также делает разработчика Linux C++ весьма приятным.
анжута не очень хорошо работает.
Затмение CDT действительно неплохо. Мне все еще приходится время от времени прибегать к Emacs, но мне очень нравится индексация, деревья вызовов, деревья типов, поддержка рефакторинга (я думал, что это не похоже на рефакторинг Java) и т. д. Подсветка синтаксиса довольно эффективна, если вы ее настраиваете (может иметь отдельные цвета для локальных переменных, аргументов функций, методов и т. д.). Автозавершение кода тоже очень удобно. Я в основном использовал Eclipse 3.3, но и 3.4 тоже отлично.
Кроме того, в основном я использую это для довольно большого проекта (~ 1e6 sloc) - это может быть излишним для игрушечных проектов.
PS. Eclipse 3.4 и CDT 5.0.2+ действительно хороши. Это рай для большой базы кода (мой основной проект состоит из миллионов строк кода).
Я тоже использую CDT. Есть плагин SCons builder для Eclipse nic-nac-project.org/~lothar/eclipse/update/…
Когда я разрабатывал код C++ для linux, я использовал emacs как редактор и как интерфейсную часть gdb. Позже моя компания приобрела SlickEdit для всех программистов, которая является хорошей IDE, возможно, не на одном уровне с Visual Studio. Мы широко использовали gdb, время от времени применяя valgrind и gprof. Я настоятельно рекомендую использовать язык сценариев в дополнение к C++ в повседневных задачах. Я перешел от PERL к python и к текущему рубину. Все они выполняют свою работу и имеют сильные стороны, а C++ - слабые места. И, конечно же, в вашем распоряжении есть все команды оболочки. Я ежедневно использую sort (), uniq (), awk и т. д. И еще одна рекомендация - подтверждать, преемник grep.
Я предпочитаю Slick VS, но это если я закрываю глаза на возможности отладки, в которых VS выдувает Slick из воды. Но кроме этого. Ваш пост в значительной степени похож на то, что я бы опубликовал, за исключением, конечно, s / emacs / vim. ;П
Или это s / vim / emacs? Я думаю, что это правильно. Я поскользнулся! : o
Я верю в s / emacs / vim, но, опять же, эксперт по vim знает это лучше, чем emacs ;-)
Я другой за KDevelop. Имеет очень разнообразный набор инструментов. Я не очень хорошо знаком с VS и имеет ли он интегрированный консольный доступ через его интерфейс, но KDevelop может позволить вам запускать консоль внутри IDE, что я всегда нахожу очень полезным. Вы всегда можете попробовать Netbeans теперь, когда он имеет полную поддержку C / C++.
Помимо этого, я хорошо использую gdb и его версию ddd на основе графического интерфейса пользователя для устранения проблем с кодом или других ошибок. Для одноразовых программ, как и другие, которые уже были опубликованы, я использую g ++ в терминале и делаю некоторые более крупные проекты.
При разработке приложений на C++ для Linux я предпочитаю использовать набор инструментов cmdline. Vim расширен множеством плагинов. Gdb с ddd, valgrind, libefence и SCons (automake - это боль ... вы знаете где)
какие плагины вы используете?
Для Vim -> NERD_tree.vim, a.vim, calendar.vim, code_complete.vim, cscope_maps.vim, taglist.vim
Eclipse CDT для редактирования, SVN для управления версиями, SCons для управления сборкой, CruiseControl для автоматизированных сборок и проприетарная среда модульного тестирования.
Я использую подключаемый модуль NetBeans C++, он великолепен и интегрируется с CVS и SVN. Со стороны управления проектом тоже очень хорошо. Я был готов к работе за считанные минуты. Это впечатляющая IDE, но будучи Java, она может быть немного медлительной.
emacs, cmake, gdb, git, valgrind. Он может быть не таким привлекательным, как Visual Studio, но работает хорошо, и его легко добавить с помощью сценариев bash или emacs lisp.
+1 с помощью s / emacs / vim /; s / cmake / make /;
После нескольких лет использования различных инструментов для разработки Linux, я действительно думаю, что вы используете лучший инструмент в своем роде.
То же, что и @justsomebody: D
Прямо сейчас использую Qt Creator. Он кроссплатформенный и довольно хорошо интегрируется с Qt, хотя (конечно) у вас есть возможность создать отдельное приложение.
Я люблю Qt Creator. Определенно отличная многообещающая IDE, которая очень хорошо интегрируется в мой рабочий стол.
Я использую Eclipse + CDT в Windows и Cygwin + g ++ для кросс-компиляции для Linux.
(Кросс-компиляторы создаются с использованием crossstool, красивого набора сценариев для создания кросс-компиляторов)
g ++
emacs
командная строка bash
gdb-mode в emacs (тип M-X gdb)
делать
Если бы вы добавили муравей, вы были бы гением.
Я использую кучу окон терминала. У меня 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 и полюбите его, как и я.
Хороший обзор с хорошими указателями и четким обоснованием.
Есть ли что-нибудь еще, что вам может понадобиться?
lint, cflow, gprof, unifdef
Никогда не было видно графического интерфейса, кроме хорошего терминала с поддержкой вкладок; храните код, отладчик, вывод и т. д. в отдельных окнах и вкладках назад и вперед очень быстро.
+1 за исключением s / vim / gvim /, это графический интерфейс с некоторой ценностью (но, честно говоря, я использовал vim в черно-белом терминале около 8 лет назад, и то, что он делал тогда в отдел подсветки синтаксиса удивляет меня по сей день)
В дополнение ко многим уже перечисленным, мы используем набор инструментов autoconf для развертывания нашей программы для пользователей.
@Carter Galle: автоинструменты ортогональны системам упаковки
Вам понадобится стандартный набор инструментов + IDE.
О стандартной цепочке инструментов сказать особо нечего. Просто установите, например, в Ubuntu / Debian через
aptitude install build-essential
Интересная часть касается IDE.
Мое личное впечатление таково, что в настоящее время - в 21 веке - vi / emacs / make / autotools / configure недостаточно для разработки программных проектов выше определенного размера (... и да, пожалуйста, пожалуйста, обвините меня в ереси наследство ...).
Какую IDE выбрать - дело вкуса. Вы найдете множество тем на SOF. Вот постоянная ссылка, в которой обсуждается, какая C++ IDE может быть «лучшей»: C++ IDE для Linux.
какое у тебя наследие? Visual Studio 6.0? -1 за «абсолютно необходима IDE», возвращается при изменении на «относительно». ;)
Arrrgh - я неправильно употребил слово. Я думал, что «наследие» - это очень изощренный способ выразить «богохульство». В следующий раз я проконсультируюсь со своим немецко-английским словарем перед публикацией;)
@ Просто кто-нибудь: вы правы насчет того, что «IDE абсолютно необходима». Я изменил формулировку.
Первым выбором Mi всегда будет emacs с большим количеством плагинов: ecb дает несколько буферов для навигации по папкам, gdb, svn или интеграция с git ... Это мой первый вариант с использованием Python.
Как второй вариант, Netbeans с подключаемым модулем C++, очень простой и довольно мощный, но, на мой взгляд, слишком тяжелый.
Я использую все, что есть в системе. Я предпочитаю Eclipse CDT в качестве редактора и g ++ в качестве компилятора. Однако, если eclipse не подходит, я использую vi, что тоже нормально.
Инкубационный проект 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 Tools Кликните сюда
FlexeLint для статического анализа кода, в дополнение к упомянутому выше:
Eclipse с CDT, gcc, make, gdb, valgrind, оболочкой bash.
Контроль версий исходного кода: Clearcase или git, в зависимости от проекта.
Вы можете объяснить, что вы имеете в виду под гладкость? Вам нужна мощность и универсальность? Скорость и эффективность? Или вам больше нравятся тяжелые кнопки и меню с графическим интерфейсом пользователя, завязанные за спиной? (Не то чтобы я когда-либо возложил бы вину на IDE за то, что я не могу делать то, что я знаю, безопасно.)