C++ 避免链接到libstdc++;

C++ 避免链接到libstdc++;,c++,linux,gcc,linker,libstdc++,C++,Linux,Gcc,Linker,Libstdc++,我正在从事一个嵌入式项目,该项目目前在Linux和uClibc中使用C。我们有兴趣把它移到C++,但是我不想在LIbSTDC++中链接相关的开销。我的印象是,如果我们不使用STL中的任何内容,比如iostream或vector,这是可能的 如何在不链接libstdc++的情况下引导g++进行编译?编译时,只使用g++-c进行编译。然后使用ld而不是g++进行链接。但是,这将直接调用链接器,这要求您在命令行上命名所有库(包括libc和libcrt) 或者,如果您使用g++作为“更好的c”,那么您可

我正在从事一个嵌入式项目,该项目目前在Linux和uClibc中使用C。我们有兴趣把它移到C++,但是我不想在LIbSTDC++中链接相关的开销。我的印象是,如果我们不使用STL中的任何内容,比如iostream或vector,这是可能的


如何在不链接libstdc++的情况下引导g++进行编译?

编译时,只使用
g++-c
进行编译。然后使用
ld
而不是
g++
进行链接。但是,这将直接调用链接器,这要求您在命令行上命名所有库(包括libc和libcrt)

或者,如果您使用g++作为“更好的c”,那么您可以在最后的链接步骤中使用
gcc
(将自动包括libc)

您可以使用

g++ -nodefaultlibs -fno-exceptions a.cc

<>但是,你不能用所有的C++特性来这样……

为了完整性和正确性:

g++ -c -fno-exceptions a.cpp
gcc a.o -o a

当我尝试这个时,我在尝试链接时得到“未定义的‘ygxxxPuxalItIVIV0’”。我想这意味着你在使用C++特有的特性。至于它是哪一个功能,我不确定。好吧,我是通过提到这个问题来实现的。您必须使用“g++-fno exceptions-c”进行编译,然后单独链接。该链接应该是: