19

我正在开发一个嵌入式项目,该项目目前在 Linux 和 uClibc 中使用 C。我们有兴趣将其移至 C++,但我不希望与 libstdc++ 中的链接相关的开销。我的印象是,如果我们不使用 STL 中的任何东西,例如 iostream 或 vector,这是可能的。

如何在不链接到 libstdc++ 的情况下直接编译 g++?

4

3 回答 3

13

你可以使用

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

但是您不能以这种方式使用所有 c++ 功能......

于 2009-10-31T01:19:17.303 回答
12

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

或者,如果您将 g++ 用作“更好的 c”,您可以将其gcc用于最后的链接步骤(其中将自动包含 libc)

于 2009-10-31T01:13:36.550 回答
2

为了完整性和正确性:

g++ -c -fno-exceptions a.cpp
gcc a.o -o a
于 2015-12-16T20:39:32.237 回答