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

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

What tools do you use to develop C++ applications on Linux?

我在Linux环境中开发C ++应用程序。 我每天使用的工具包括带有CDT插件的Eclipse,gdb和valgrind。
别人使用什么工具? Linux上有什么可以与Microsoft Visual Studio媲美的功能吗?


我使用了一堆终端窗口。我在有趣的源文件上运行vim,在另一个上运行make和g ++输出以解决编译器错误,或者在gdb会话中运行时发生错误。如果我在查找定义方面需要帮助,可以运行cscope并使用vim的cscope支持进行跳转。

Eclipse CDT是我的第二选择。与vim相比,它不错,但又庞大,笨拙且缓慢。

使用终端窗口和vim非常灵活,因为我不需要随身携带400 MB的Java,因此我可以在任何地方使用SSH会话。

当我需要查找内存问题时使用valgrind。

我使用strace在系统调用级别上查看我的软件正在做什么。这让我清理了真正愚蠢的代码,该代码连续四次调用time(0)或对poll()或无阻塞的read()进行了太多调用,或在套接字上调用read()以便一次读取1个字节的事情时间。 (那是超级低效和懒惰!)

我使用objdump -d检查机器代码,尤其是对性能敏感的内部循环。与使用迭代器相比,这就是我发现类似数组的索引操作符在字符串上速度较慢的问题。

我使用oprofile尝试在优化的代码中查找热点,我发现它通常比gprof更好,并且可以执行诸如查找数据和指令高速缓存未命中之类的事情。这样可以告诉您使用GCC的__builtin_prefetch在哪里放置一些有用的预取提示。我也尝试使用它来查找错误的热门分支,但是无法为我工作。

更新:我发现perf比oprofile更好。至少在Linux上。像我一样学习使用perf并喜欢它。


当然是g ++,还有Code :: Blocks,这是一个绝对出色的跨平台IDE(Win32,* nix,Mac)。

我使用SVN的每晚(更像是每周一次)构建。它几乎具有您希望从现代IDE中获得的所有好处。这确实是一个很棒的开源项目。

同样,在Linux上,您会获得使用Valgrind的乐趣,Valgrind可能是金钱可以买到的最好的内存跟踪器(它也做其他事情)。它是免费的:)轻松跟踪内存泄漏以及更多内容。

还有更多! Linux是一个很棒的开发平台:)

(edit)刚刚意识到您在问题中提到了Valgrind,让我读得太快很愚蠢。


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


  • g ++

  • emacs

  • bash命令行

  • emacs中的gdb-mode(类型M-X gdb)

  • 使


现在,我使用Qt Creator。它是跨平台的,并且可以与Qt很好地集成,尽管(当然)您可以选择创建独立的应用程序。


emacs,cmake,gdb,git,valgrind。它可能不像Visual Studio那样精巧,但是效果很好,并且可以通过bash脚本或emacs lisp轻松添加功能。


我相信KDevelop是距离Microsoft Visual Studio最近的产品。
您将获得几乎所有东西(不幸的是,VS调试器确实是杀手except)。
它已经成熟,并且发展很快并且很有前途。

它实际上实现了一些您甚至在VS中都看不到的东西。例如,在垂直图块模式下打开头文件和cpp文件,并在两个方向上使光标同步,
即:当您选择函数原型时,总是在您的右边实现它。

KDevelop是一个KDE项目,但是在Gnome上运行。 Anjuta是Gnome上的一个等效项目,但我发现它无法用于实际工作。对于其余的gcc,请使用valgrind ddd(一个gdb IDE)和python编写脚本代码。

如果您可以尝试使用不同于VS IDE的方法。您可以考虑尝试vim。但是要花很长时间才能习惯它。


g ++并制作


Eclipse CDT确实非常不错。我仍然不得不时不时地诉诸于Emacs,但是我真的很喜欢索引,调用树,类型树,重构支持(这与Java重构没什么两样)。如果自定义语法高亮(可以单独使用)局部变量,函数参数,方法等的颜色)。代码完成也非常方便。我主要使用Eclipse 3.3,但3.4也很棒。

另外,大多数情况下,我将它用于一个较大的项目(?1e6 sloc),这可能对玩具项目来说是过大的。


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

关于标准工具链,没有什么可说的。只需安装例如在Ubuntu / Debian上通过

1
aptitude install build-essential

有趣的部分是关于IDE。

我个人的印象是,在当今-21世纪-vi / emacs / make / autotools / configure不足以开发超过一定大小的软件项目(...是的,请继承我的责任。 异端...)。

选择哪种IDE只是一个问题。您会在SOF上找到很多线程。这是一个固定链接,讨论哪种C ++ IDE可能是"最好的":适用于Linux的C ++ IDE。


当我在Linux上开发C ++代码时,我将emacs用作编辑器和gdb前端。后来,我公司为所有程序员购买了SlickEdit,这是一个不错的IDE,也许无法与Visual Studio相提并论。我们广泛使用gdb,偶尔使用valgrind和gprof。我强烈建议在日常任务中使用脚本语言来补充C ++。我从PERL转到python,再到当前的ruby。他们所有人都能胜任工作,并拥有C ++的弱点。而且,当然,您可以使用所有的shell命令。我每天都使用sort(),uniq(),awk等。还有一个建议是ack,它是grep的后继者。


我使用了NetBeans C ++插件,它非常出色,并且与CVS和SVN集成在一起。项目管理方面也很好。我在几分钟内就开始使用它。这是一个令人印象深刻的IDE,但是使用Java可能会有点迟钝。


  • 海湾合作委员会
  • GHC
  • Vim
  • 马克
  • 范围
  • 广东发展银行
  • 瓦尔格朗德
  • 痕迹
  • 吉特

您还有其他可能需要的东西吗?


  • 重击
  • Vim
  • 使
  • G ++
  • 广东发展银行
  • 瓦尔格朗德
  • Gprof
  • svn

除了具有标签支持的良好终端外,再也看不到GUI。将代码,调试器,输出等全部保存在单独的窗口中,并快速制表和后退。


  • CMake的
  • vim
  • g ++
  • kdevelop(每天从SVN编译!)
  • 如果可以的话,使用Mercurial,在必须使用SVN的情况下,当真的没有其他选择的时候,使用git(为使用它的项目做贡献)
  • 瓦尔格朗德

除了已经列出的许多功能之外,我们还使用autoconf工具集将程序部署到用户。


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

搜索C / C ++ Linux开发人员的Eclipse Helios IDE(包括孵化组件),(120 MB)

尝试使用可用的.psf文件构建Linux工具后,发现了这一点。
值得庆幸的是,该软件包隐藏在Helios软件包下载页面的底部。

请注意,这是一个孵化项目,因此您可以期望支持会随着时间的推移而不断改善。

也可以看看:
有关安装和使用Eclipse Linux Tools的更新信息,请单击此处。


Anjuta是一个不错的主意,它也使Linux C ++开发人员也非常满意。


我是KDevelop的另一个人。它具有多种工具。我对VS以及它是否通过其界面集成控制台访问不是很熟悉,但是KDevelop可以让您在IDE中运行一个konsole,我总是觉得这很有用。有了NetBeans的完整C / C ++支持,您可以随时尝试一下。

除此之外,我充分利用了gdb及其基于gui的ddd版本来解决代码问题或其他错误。对于一次性程序,就像已经发布的其他程序一样,我在终端上使用g ++并进行一些较大的项目。


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

(交叉编译器是使用crosstool构建的,crosstool是用于生成交叉编译器的漂亮脚本集)


用于编辑的Eclipse CDT,用于源代码控制的SVN,用于构建管理的SCons,用于自动构建的CruiseControl和专有的单元测试框架。


Mi的首选始终是带有许多插件的emacs:ecb提供了一些在文件夹,gdb,svn或git集成上导航的缓冲区...这也是使用Python的mi首选。

作为第二选择,带有C ++插件的Netbeans非常简单且功能强大,但我认为它太重了。


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


我使用系统上的任何东西。我更喜欢Eclipse CDT作为编辑器,更喜欢g ++作为编译器。但是,如果不能使用eclipse,我也可以使用vi,也可以。


推荐阅读