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