C++ x86 C+有哪些(工作)备用工具链+;linux上的开发?

C++ x86 C+有哪些(工作)备用工具链+;linux上的开发?,c++,linux,gcc,clang,C++,Linux,Gcc,Clang,我明确表示,我将这个问题限制在x86(64位)linux机箱的“本机”开发上。没有嵌入式或非x86体系结构 因为我是C++用户,还有C++的复兴,我现在正在使用C++来进行人事项目。 现在我正在使用健壮的传统linux/gcc/make工具链 但通过博客帖子和其他问题,我最近意识到了新的有前途的工具: “铿锵”作为“gcc”的替代品,速度更快,提供更好的错误消息 “黄金”取代“黄金”,速度更快 这些工具鲜为人知,甚至很容易对它们一无所知 还有其他我应该注意的有趣的不太为人所知的工具吗?例如,

我明确表示,我将这个问题限制在x86(64位)linux机箱的“本机”开发上。没有嵌入式或非x86体系结构

<>因为我是C++用户,还有C++的复兴,我现在正在使用C++来进行人事项目。 现在我正在使用健壮的传统linux/gcc/make工具链

但通过博客帖子和其他问题,我最近意识到了新的有前途的工具:

  • “铿锵”作为“gcc”的替代品,速度更快,提供更好的错误消息
  • “黄金”取代“黄金”,速度更快
这些工具鲜为人知,甚至很容易对它们一无所知

还有其他我应该注意的有趣的不太为人所知的工具吗?例如,gdb或类似产品的替代品?(我也在使用cmake)

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


如果可能,免费工具。

我知道有两种选择:


两者都可以取代make,因为它们对于大型项目来说速度更快,因为它们不会进行如此广泛的检查。

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

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

编码时,可能会使用。请参阅在C++中使用它。p> 还可以使用
valgrind
调试内存泄漏

有时,使用动态加载共享对象很有趣。<代码> dLysM -ED符号应该是C++中的代码>外部“C”< /代码>。有时我喜欢在C中生成C或C++代码,编译它,并且<代码> DLOPEN/CONT>模块。 对于建筑,考虑研究其他建筑商,例如:

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

如果您的源代码文件共享所有相同的C++头,则预编译该头是值得的。 新的(例如,比C++更好的)语言已经存在,如Ocaml和Haskell,但也有Go和D

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

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

使您能够在C++中快速地编写Web接口。

GCC和GDB仍在发展中。别忘了使用最新版本(如GCC的4.6版本,GDB的7.3版本),它们比早期版本提供了重大改进


考虑通过插件或更好的使用扩展来扩展或定制您的GCC编译器,以满足您的特殊需求。

对于替换工具链的make部分,我建议使用快速且占用空间小的工具链。支持也不错

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

叮当声似乎很有希望,但我还没有在生产项目中尝试过。我计划,因为它经过深思熟虑的设计导致了真正快速的发展。我计划用它切换到C++11^^


my2c

有英特尔的ICC编译器,它带有调试器和其他工具。它在Linux上的非商业用途是免费的,否则会很贵。@PaulR谢谢Paul。当然,我更感兴趣的是免费工具,一个比旧工具有显著改进的工具。(英特尔声称提高了执行速度,但我想这就是全部)正如我在评论中所说,ICC在Linux上的非商业用途是免费的。除了高质量的代码生成,它通常是第一个支持新CPU功能的编译器(出于明显的原因),例如最新的SSE、AVX等。+1非常有趣,谢谢。“Make vs Tup”看起来很有希望。你自己用吗?现在我们需要的是一个用于cmake的tup生成器。我看到在这方面有一些努力。@Offirmo我的同事正在努力从make转换到tup,他提到了大约30%的改进。Gold保持不变,但现在在实践中已经相当成熟。Google对Gold非常感兴趣。目前,GCC4.6似乎比clang 3.0对C++11的支持要好一点。我目前正在OSX上使用LLVM GCC(基本上是clang),我发现它的编译和一般开发速度非常快。在XCode中,clang不断地在后台构建符号表,这使得代码完成具有响应性和上下文意识,并且如前所述,减少了编译/构建时间。@Basile:谢谢您提供的信息。你在一个链接数千个对象文件的大项目上试过吗?@Basile:好的。我还没有检查GCC4.6和last clang的对比。在用C++11测试clang之前,我会这样做:)好的,这里有很多答案(我不会改变语言,让我们继续讨论这个问题)。tinycc只是C,太糟糕了。我对垃圾收集器很感兴趣,请看一看。@Basile Starynkevitch--+1用于提及-Wall,这是所有构建所必需的。我从未听说过MELT,看起来非常有趣,谢谢!我是《熔化》的主要作者,所以我真的很乐意回答任何问题@很好。我可以用一个链接来解释熔体使用的实际使用情况,从而改进C++开发吗?我(很容易)找不到。