你用什么工具在Linux上开发C ++应用程序?

我在Linux环境下开发C ++应用程序。 我每天使用的工具包括Eclipse与CDT插件,gdb和valgrind。
其他人使用什么工具? 有没有什么可以与Linux相媲美的微软Visual Studio?

我使用了一堆terminal窗口。 我有vim上运行有趣的源文件,使编译器错误的另一个g + +输出,或运行时错误gdb会话。 如果我需要帮助查找定义,我运行cscope并使用vim的cscope支持来跳转。

Eclipse CDT是我的第二select。 与vim相比,它不错但是巨大,笨拙和缓慢。

使用terminal窗口和vim是非常灵活的,因为我不需要携带400 MB的Java周围我可以从任何地方使用SSH会话。

当我需要find内存问题时,我使用valgrind。

我使用strace来观察我的软件在系统调用级别上正在做什么。 这可以让我清理一些连续四次调用time(0)或者调用poll()或者非阻塞read()或者在套接字上调用read()以读取1个字节的事情的非常愚蠢的代码一次。 (这是超级低效和懒惰!)

我使用objdump -d来检查机器代码,尤其是对性能敏感的内部循环。 这就是我如何find类似于使用迭代器的string数组索引运算符的缓慢性。

我使用oprofile来尝试find优化代码中的热点,我发现它经常比gprof更好一些,它可以做像查找数据和指令caching未命中的事情。 这可以告诉你在哪里放弃一些有用的预取提示使用GCC的__builtin_prefetch 。 我试图用它来find热门的错误预测分支,但无法为我工作。

更新:我发现perf的工作方式比oprofile更好。 至less在Linux上。 学会使用perf并像我一样爱它。

g ++,当然Code :: Blocks也是一个绝佳的跨平台IDE(Win32,* nix,Mac)。

我使用SVN构build的每晚(更像每周最近一次)。 它几乎涵盖了现代IDE所期望的所有function。 这真是一个非常棒的开源项目。

另外,在Linux上,你可以使用Valgrind ,这也许是最好的内存跟踪器(它也是其他的东西),可以买到钱的工具。 而且它是免费的:)轻松跟踪内存泄漏和更多。

还有更多! Linux是如此伟大的开发平台:)

(编辑)刚才意识到你提到Valgrind在你的问题中,傻了我读得太快。

当为Linux开发C ++应用程序时,我更喜欢使用一堆cmdline工具。 Vim扩展了很多插件。 GDB与ddd,valgrind,libefence和SCons(automake是一个痛苦在…你知道在哪里)

  • 克++

  • emacs的

  • bash命令行

  • emacs中的gdb-mode(键入MX gdb)

  • 使

emacs,cmake,gdb,git,valgrind。 它可能不像Visual Studio那样光滑,但它运行良好,并且通过bash脚本或emacs lisp添加function很容易。

我相信KDevelop是最接近Microsoft Visual Studio的。 你得到几乎所有的东西(不幸的是VSdebugging器,这确实是一个杀手)。 它已经成熟,发展很快,很有希望。

它实际上实现了一些你甚至不会在VS中看到的东西。 例如,在垂直磁贴模式下打开头文件和cpp文件,并使光标同步,即:当你select一个函数原型时,你总是在你的右边实现它。

KDevelop是一个KDE项目,但在Gnome上运行。 Anjuta是Gnome上的一个等效项目,但是我发现它对于实际工作是不可用的。 对于其他的堆栈gcc使valgrind ddd(一个gdb的IDE)和Python脚本我的代码。

如果您可以尝试与VS IDE不同的方法。 你可以考虑尝试vim。 这需要很长时间才能习惯。

现在我使用Qt Creator 。 它是跨平台的,并且与Qt很好地集成在一起,尽pipe(当然)你可以select创build一个独立的应用程序。

Eclipse CDT真的很不错。 我仍然不得不求助于Emacs,但我真的很喜欢索引,调用树,types树,重构支持(认为它不像Java重构)等等。如果你定制它,语法高亮是相当强大的(可以分开局部variables的颜色,函数参数,方法等)。 代码完成也非常方便。 我主要使用Eclipse 3.3,但是3.4也很棒。

另外,大多数情况下,我正在使用这个有点大的项目(〜1e6 sloc) – 这可能是玩具项目的矫枉过正。

g ++和make

你需要一个标准的工具链+一个IDE。

标准工具链没有什么可说的。 只需在Ubuntu / Debian上安装即可

 aptitude install build-essential 

有趣的部分是关于一个IDE。

我个人的印象是,现在 – 在21世纪 – vi / emacs / make / autotools / configure不足以开发超过一定规模的软件项目(…是的, 请请怪我遗传异端 .. )。

select哪个IDE只是一个问题。 你会在SOF上find很multithreading。 这里是一个永久链接,讨论哪个C ++ IDE可能是最好的: 用于Linux的C ++ IDE 。

当我在Linux上开发C ++代码时,我使用emacs作为编辑器和gdb前端。 后来,我的公司为所有的程序员购买了SlickEdit ,这是一个不错的IDE,可能与Visual Studio不一样。 我们广泛使用gdb,偶尔使用valgrind和gprof。 我强烈build议使用脚本语言来补充C ++的日常任务。 我从PERL到Python到当前的ruby。 他们都完成了这项工作,并在C ++有弱点的地方有优势。 当然,你可以使用所有的shell命令。 我每天使用sort(),uniq(),awk等等。还有一个推荐是ack ,grep的inheritance者。

我使用了NetBeans C ++插件,这是一stream的,并集成了CVS和SVN。 项目pipe理方面也很好。 在几分钟之内,我就起来跑步了。 这是一个令人印象深刻的IDE,但作为Java,可以有点呆滞。

  • GCC
  • GHC
  • VIM
  • cmake的
  • cscope的
  • GDB
  • Valgrind的
  • strace的
  • 混帐

还有什么你可能需要的吗?

  • 巴什
  • VIM
  • 使
  • G ++
  • GDB
  • Valgrind的
  • GPROF
  • SVN

从来没有看到一个graphics用户界面除了一个良好的terminal支持标签; 将代码,debugging器,输出等全部保存在不同的窗口中,并真正快速地前后移动。

  • CMake的
  • VIM
  • 克++
  • kdevelop(每日由SVN编译!)
  • 当我可以的时候可以使用Mercurial,当我需要的时候使用SVN,当没有别的select的时候使用Git(对使用它的项目做出贡献)
  • 的valgrind

除了许多已经列出的,我们使用autoconf工具集将程序部署给用户。

Anjuta是一个不错的主意,使得Linux C ++ dev也相当令人愉快。

我是另一个KDevelop。 它有一套非常不同的工具。 我对VS并不熟悉,也不知道它是否通过它的接口集成了控制台访问权限,但是KDevelop允许你在IDE中运行一个konsole,我总觉得它非常有用。 你现在总是可以让Netbeans拥有完整的C / C ++支持。

除此之外,我使用gdb和基于gui的版本ddd来解决代码或其他错误的问题。 对于丢弃程序,像已经发布的其他程序 – 我在terminal使用g ++,并为一些更大的项目。

用于编辑的Eclipse CDT,用于源代码pipe理的SVN,用于构buildpipe理的SCons,用于自动构build的CruiseControl和专有的unit testing框架。

我在Windows上使用Eclipse + CDT,Cygwin + g ++在Linux上交叉编译。

(交叉编译器是使用crosstool构build的,这是一个用于生成交叉编译器的很好的脚本集)

Mi的第一select是拥有大量插件的allways emacs:ecb提供了一些缓冲区来浏览文件夹,gdb,svn或者git集成…这也是使用Python的第一select。

作为第二select,使​​用C ++插件的Netbeans非常简单,相当强大,但我认为太重了。

我使用系统上的任何东西。 我更喜欢Eclipse CDT作为编辑器,而使用g ++作为编译器。 但是,如果日食不是一个选项我使用vi,这也是好的。

Eclipse孵化项目Linux工具集成了C / C ++开发工具。 这是一个GUI插件,可以将诸如Valgrind,GProf,GCov,SystemTap等工具集成到Eclipse C ++ CDT IDE中。

search适用于C / C ++ Linux开发人员的Eclipse Helios IDE(包括孵化组件),(120 MB)

尝试使用可用的.psf文件构buildLinux Tools后发现此问题。 谢天谢地,这个软件包隐藏在Helios软件包下载页面的底部。

请注意,这是一个孵化项目,所以您可以期待随着时间的推移,支持只会变得更好。

另请参阅:有关安装和使用Eclipse Linux工具的更新信息单击此处

FlexeLint用于静态代码分析,除了上面提到的:
用CDT,gcc,make,gdb,valgrind,bash shell。
源代码版本控制:Clearcase或者git,取决于项目。