我正在开发一个目前在Linux和uClibc中使用C的嵌入式项目。我们有兴趣将它转移到C ++,但我不希望与libstdc ++中的链接相关的开销。我的印象是,如果我们不使用STL中的任何内容,例如iostream或vector,这是可能的。
如何在不链接到libstdc ++的情况下指导g ++编译?
答案 0 :(得分:12)
编译时,使用g++ -c
仅编译。然后,要进行关联,请使用ld
代替g++
。这会直接调用链接器,这需要您在命令行上命名所有库(包括libc和libcrt)。
或者,如果您使用g ++作为“更好的c”,您可以使用gcc
作为最后的链接步骤(将自动包含libc)
答案 1 :(得分:10)
您可以使用
g++ -nodefaultlibs -fno-exceptions a.cc
但你不能用这种方式使用所有的c ++功能......
答案 2 :(得分:2)
为了完整性和正确性:
g++ -c -fno-exceptions a.cpp
gcc a.o -o a