在Linux上进行x86 C ++开发有哪些(工作)备用工具链?

时间:2012-01-05 09:43:58

标签: c++ linux gcc clang

我确切地说我将这个问题限制为我的x86(64位)linux盒子的“本机”开发。没有嵌入式或非x86架构。

由于我是C ++用户并且有C ++文艺复兴,我目前正在使用C ++进行个人项目。

现在我正在使用强大的传统linux / gcc / make工具链。

但是通过博客文章和SO问题,我最近意识到了新的有前途的工具:

  • ''clang''作为''gcc''的替代品,速度更快,提供更好的错误消息
  • ''gold''代替''ld'',快得多

这些工具鲜为人知,很容易甚至不知道它们。

我应该注意其他有趣的鲜为人知的工具吗?例如替代gdb等? (我也在使用cmake)

我首先寻求易于开发,然后提高开发速度。欢迎任何其他改进。

尽可能使用免费工具。

3 个答案:

答案 0 :(得分:5)

您可能对ccache感兴趣(编译器缓存能够避免无用的重新编译,并通过相同的g++命令透明地使用,只需在$PATH内添加符号链接< / p>

对于C(但不是C ++)编程,您可能对tinycc感兴趣 - 它编译速度非常快(但生成缓慢运行的二进制代码)。

编码时,可能会使用Boehm's garbage collector。请参阅与在C ++中使用它有关的this question

并使用valgrind调试内存泄漏。

有时,使用dlopen动态加载共享对象很有用。 dlsym - ed符号在C ++中应为extern "C"。我有时喜欢动态生成C或C ++代码,编译它,以及dlopen - 模块。

对于建筑物,请考虑调查其他建筑商,例如: omake

编译时,不要忘记编译器的-Wall(可能是-Wextra)标志。新的链接时间优化(CXX=g++ -flto中的Makefile)可能很有意思(但编译时间会受到影响,因为可执行文件的速度可能会提高10%)。

如果您的源代码文件共享所有相同的C ++标头,那么预编译该标头是值得的。

存在较新的(例如优于C ++)语言,如Ocaml和Haskell,还有Go和D.

即使是宠物项目,也可以使用像GIT这样的版本控制系统。

Qt是一个很好的C ++框架,特别是它的图形工具包。

Wt使您能够非常快速地在C ++中编写Web界面。

GCC和&amp; GDB仍在不断发展。不要忘记使用最新版本(例如,GCC为4.6,GDB为7.3),这些版本比早期版本提供了重大改进。

考虑通过插件扩展或自定义GCC编译器以满足您的特定需求,或者更好地使用MELT扩展。

答案 1 :(得分:4)

我知道两种选择:

两者都可以取代make,因为它们对大型项目来说更快,因为它们不会进行大量检查。

答案 2 :(得分:1)

为了更换工具链的制造部分,我建议waf这是快速且占地面积小的。支持也非常好。

我尝试过的黄金并不比ld快,但似乎很有希望。但是,上次我检查时,它似乎并没有真正被维护。

clang似乎很有希望,但我还没有在生产项目中尝试过。我计划,因为其精心设计的设计可以实现快速发展。我打算用它来切换到C ++ 11 ^^

MY2C