What tools do you use to develop C++ applications on Linux?
我在Linux环境中开发C ++应用程序。 我每天使用的工具包括带有CDT插件的Eclipse,gdb和valgrind。 我使用了一堆终端窗口。我在有趣的源文件上运行vim,在另一个上运行make和g ++输出以解决编译器错误,或者在gdb会话中运行时发生错误。如果我在查找定义方面需要帮助,可以运行cscope并使用vim的cscope支持进行跳转。 Eclipse CDT是我的第二选择。与vim相比,它不错,但又庞大,笨拙且缓慢。 使用终端窗口和vim非常灵活,因为我不需要随身携带400 MB的Java,因此我可以在任何地方使用SSH会话。 当我需要查找内存问题时使用valgrind。
我使用
我使用
我使用oprofile尝试在优化的代码中查找热点,我发现它通常比gprof更好,并且可以执行诸如查找数据和指令高速缓存未命中之类的事情。这样可以告诉您使用GCC的 更新:我发现perf比oprofile更好。至少在Linux上。像我一样学习使用perf并喜欢它。 当然是g ++,还有Code :: Blocks,这是一个绝对出色的跨平台IDE(Win32,* nix,Mac)。 我使用SVN的每晚(更像是每周一次)构建。它几乎具有您希望从现代IDE中获得的所有好处。这确实是一个很棒的开源项目。 同样,在Linux上,您会获得使用Valgrind的乐趣,Valgrind可能是金钱可以买到的最好的内存跟踪器(它也做其他事情)。它是免费的:)轻松跟踪内存泄漏以及更多内容。 还有更多! Linux是一个很棒的开发平台:) (edit)刚刚意识到您在问题中提到了Valgrind,让我读得太快很愚蠢。
在为Linux开发C ++应用程序时,我更喜欢使用一堆cmdline工具。
现在,我使用Qt Creator。它是跨平台的,并且可以与Qt很好地集成,尽管(当然)您可以选择创建独立的应用程序。 emacs,cmake,gdb,git,valgrind。它可能不像Visual Studio那样精巧,但是效果很好,并且可以通过bash脚本或emacs lisp轻松添加功能。
我相信KDevelop是距离Microsoft Visual Studio最近的产品。
它实际上实现了一些您甚至在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上通过
有趣的部分是关于IDE。 我个人的印象是,在当今-21世纪-vi / emacs / make / autotools / configure不足以开发超过一定大小的软件项目(...是的,请继承我的责任。 s>异端...)。 选择哪种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可能会有点迟钝。
您还有其他可能需要的东西吗?
除了具有标签支持的良好终端外,再也看不到GUI。将代码,调试器,输出等全部保存在单独的窗口中,并快速制表和后退。
除了已经列出的许多功能之外,我们还使用autoconf工具集将程序部署到用户。
Eclipse孵化项目Linux Tools集成了C / C ++开发工具。 搜索C / C ++ Linux开发人员的Eclipse Helios IDE(包括孵化组件),(120 MB)
尝试使用可用的.psf文件构建Linux工具后,发现了这一点。 请注意,这是一个孵化项目,因此您可以期望支持会随着时间的推移而不断改善。
也可以看看: 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还用于静态代码分析: 我使用系统上的任何东西。我更喜欢Eclipse CDT作为编辑器,更喜欢g ++作为编译器。但是,如果不能使用eclipse,我也可以使用vi,也可以。 |