我确切地说我将这个问题限制为我的x86(64位)linux盒子的“本机”开发。没有嵌入式或非x86架构。
由于我是C ++用户并且有C ++文艺复兴,我目前正在使用C ++进行个人项目。
现在我正在使用强大的传统linux / gcc / make工具链。
但是通过博客文章和SO问题,我最近意识到了新的有前途的工具:
这些工具鲜为人知,很容易甚至不知道它们。
我应该注意其他有趣的鲜为人知的工具吗?例如替代gdb等? (我也在使用cmake)
我首先寻求易于开发,然后提高开发速度。欢迎任何其他改进。
尽可能使用免费工具。
答案 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)
答案 2 :(得分:1)
为了更换工具链的制造部分,我建议waf这是快速且占地面积小的。支持也非常好。
我尝试过的黄金并不比ld快,但似乎很有希望。但是,上次我检查时,它似乎并没有真正被维护。
clang似乎很有希望,但我还没有在生产项目中尝试过。我计划,因为其精心设计的设计可以实现快速发展。我打算用它来切换到C ++ 11 ^^MY2C