我在 Linux 环境中开发 C++ 应用程序。我每天使用的工具包括带有 CDT 插件的 Eclipse、gdb 和 valgrind。
其他人使用什么工具?Linux 是否有任何东西可以与 Microsoft Visual Studio 的流畅性相媲美?
24 回答
我使用了一堆终端窗口。我在有趣的源文件上运行 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的乐趣,这可能是金钱可以买到的最好的内存跟踪器(它也可以做其他事情)工具。而且它是免费的 :) 轻松追踪内存泄漏等。
还有更多!Linux 是一个很棒的开发平台 :)
(编辑)刚刚意识到你在你的问题中提到了 Valgrind,我读得太快太傻了。
在为 linux 开发 C++ 应用程序时,我更喜欢使用一堆 cmdline 工具。Vim 扩展了很多插件。带有 ddd、valgrind、libefence 和 SCons 的 Gdb(automake 很痛苦……你知道在哪里)
克++
emacs
bash 命令行
emacs 中的 gdb 模式(类型 MX gdb)
制作
emacs、cmake、gdb、git、valgrind。它可能不像 Visual Studio 那样流畅,但运行良好,并且通过 bash 脚本或 emacs lisp 添加功能很容易。
现在我使用Qt Creator。它是跨平台的,并且与 Qt 很好地集成,尽管(当然)您可以选择创建一个独立的应用程序。
g++ 和制作
我相信 KDevelop 是最接近 Microsoft Visual Studio 的。你几乎得到了一切(不幸的是 VS 调试器确实是一个杀手)。它已经成熟,并且发展非常迅速且充满希望。
它实际上实现了一些你甚至不会在 VS 中看到的东西。例如,以垂直平铺模式打开头文件和cpp文件,并使光标在两者中同步,即:当您选择一个函数原型时,您的右侧总是有它的实现。
KDevelop 是一个 KDE 项目,但在 Gnome 上运行。Anjuta 是 Gnome 上的一个等效项目,但我发现它无法用于实际工作。对于堆栈的其余部分,gcc 使 valgrind ddd(一个 gdb IDE)和 python 用于编写我的代码的脚本。
如果您可以尝试与 VS IDE 不同的方法。你可以考虑试试 vim。不过需要很长时间才能习惯。
Eclipse CDT真的很不错。我仍然不得不时不时地求助于 Emacs,但我真的很喜欢索引、调用树、类型树、重构支持(认为它不像 Java 重构)等等。如果你自定义它,语法高亮是非常强大的(可以有单独的局部变量、函数参数、方法等的颜色)。代码完成也非常方便。我主要使用 Eclipse 3.3,但 3.4 也很棒。
此外,大多数情况下,我将它用于一个有点大的项目(~1e6 sloc)——这对于玩具项目来说可能是矫枉过正。
当我在 linux 上开发 C++ 代码时,我使用 emacs 作为编辑器和 gdb 前端。后来,我公司为所有程序员购买了SlickEdit,这是一个不错的 IDE,可能与 Visual Studio 不相上下。我们广泛使用 gdb,偶尔使用 valgrind 和 gprof。我强烈建议在日常任务中使用脚本语言来补充 C++。我从 PERL 到 python 到当前的 ruby。他们都完成了工作,并且在 C++ 有弱点的地方拥有优势。而且,当然,您可以使用所有的 shell 命令。我每天都使用 sort()、uniq()、awk 等。还有一个推荐是ack,它是 grep 的继任者。
You need a standard toolchain + an IDE.
There's nothing much to say about the standard toolchain. Just install e.g. on Ubuntu/Debian via
aptitude install build-essential
The interesting part is about an IDE.
My personal impression is that nowadays - in the 21th century - vi/emacs/make/autotools/configure is not enough for developing software projects above a certain size (... and yes, please please please blame me for the heritage heresy ...).
Which IDE to choose is simply a matter of taste. You will find a lot of threads on SOF. Here is a permalink discussing which C++ IDE might be the "best": C++ IDE for Linux.
- 海合会
- GHC
- 维姆
- 制作
- 示波器
- 广发银行
- 瓦尔格林德
- 跟踪
- 混帐
真的有什么你可能需要的吗?
我使用的是 NetBeans C++ 插件,它非常棒,并且与 CVS 和 SVN 集成。项目管理方面也很好。我在几分钟内就启动并运行它。这是一个令人印象深刻的 IDE,但作为 Java,可能会有点迟钝。
除了已经列出的许多之外,我们还使用autoconf工具集将我们的程序部署给用户。
- 重击
- 维姆
- 制作
- G++
- 广发银行
- 瓦尔格林德
- 教授
- svn
除了带有标签支持的良好终端外,永远不会看到 GUI;将代码、调试器、输出等全部保存在单独的窗口中,并且非常快速地来回切换。
- 制作
- vim
- 克++
- kdevelop(每天从 SVN 编译!)
- 可以时使用 Mercurial,必须时使用 SVN,确实别无选择时使用 git(为使用它的项目做出贡献)
- 瓦尔格林
Anjuta是一个不错的想法,它也让 Linux C++ 开发人员非常愉快。
我是 KDevelop 的另一个人。它有一套非常多样化的工具。我不太熟悉 VS 以及它是否通过其界面集成了控制台访问,但 KDevelop 可以让您在 IDE 中运行 konsole,我总是觉得这非常有用。既然 Netbeans 具有完整的 C/C++ 支持,您总是可以尝试一下。
除此之外,我充分利用 gdb 及其基于 gui 的版本 ddd 来解决代码问题或其他错误。对于一次性程序,就像已经发布的其他程序一样 - 我在终端使用 g++ 并制作一些更大的项目。
我在 Windows 上使用 Eclipse+CDT,在 Linux 上使用 Cygwin + g++ 进行交叉编译。
(交叉编译器是使用 crosstool 构建的,这是一个用于生成交叉编译器的好脚本集)
FlexeLint 用于静态代码分析,除了上面提到的:
Eclipse 与 CDT、gcc、make、gdb、valgrind、bash shell。
源版本控制:Clearcase 或 git,取决于项目。
Eclipse CDT 用于编辑,SVN 用于源代码控制,SCons 用于构建管理,CruiseControl 用于自动构建和专有的单元测试框架。
我使用系统上的任何东西。我更喜欢 Eclipse CDT 作为编辑器,而 g++ 作为编译器。但是,如果 eclipse 不是一个选项,我使用 vi,这也很好。
Mi 的首选总是带有很多插件的 emacs:ecb 提供了一些缓冲区来导航文件夹、gdb、svn 或 git 集成......这也是 mi 使用 Python 的首选。
作为第二选择,带有 C++ 插件的 Netbeans 非常简单且功能强大,但我认为它太重了。
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 工具的更新信息,请单击此处