linux上x86 C++开发存在哪些(可工作的)替代工具链

What (working) alternate toolchains exist for x86 C++ development on linux?

本文关键字:工作 代工 工具 C++ x86 开发 存在 linux      更新时间:2023-10-16

我精确地说,我将这个问题限制在x86(64位)linux盒的"本机"开发上。没有嵌入式或非x86体系结构。

由于我是一名C++用户,而且C++正在复兴,我目前正在将C++用于个人项目。

现在我使用的是健壮的、传统的linux/gcc/make工具链。

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

  • "lang"作为"ccc"的替代方案,速度更快,提供更好的错误消息
  • "old"代替"d",速度快得多

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

还有其他有趣的鲜为人知的工具我应该知道吗?例如gdb之类的替代方案?(我也在使用cmake)

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

如果可能,免费提供工具。

您可能对ccache感兴趣(一种编译器缓存,能够避免无用的重新编译,并且可以通过相同的g++命令透明地使用,只需在$PATH中添加一个符号链接)

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

编码时,可能会使用Boehm的垃圾收集器。请参阅这个与在C++中使用它相关的问题。

还可以使用valgrind来调试内存泄漏。

有时,使用dlopen动态加载共享对象很有趣。在C++中,dlsym的符号应该是extern "C"。我有时喜欢动态生成C或C++代码,对其进行编译,并对模块进行dlopen编译。

对于建筑,考虑调查其他建筑商,例如omake。

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

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

存在较新(例如,比C++更好)的语言,如Ocaml和Haskell,但也存在Go和D.

即使对于宠物项目,也要使用像GIT这样的版本控制系统。

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

Wt使您能够非常快速地用C++编写web界面。

GCC&GDB仍在发展中。别忘了使用最新版本(例如,GCC为4.6,GDB为7.3),它比早期版本有了重大改进。

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

我知道两种选择:

  • tup
  • 忍者建筑

两者都可以取代make,因为它们在大型项目中速度更快,因为它们不需要进行如此广泛的检查。

对于替换工具链的make部分,我推荐waf,它速度快,占地面积小。支持也比较好。

我试过金牌,虽然速度不比ld快,但似乎很有希望。不过,上次我检查时,它似乎并没有真正得到维护。

clang看起来很有前途,但我还没有在生产项目中尝试过。我计划这样做,因为它经过深思熟虑的设计带来了真正快速的发展。我计划用它切换到C++11^^

my2c