避免链接到 libstdc++
我正在开发一个嵌入式项目,目前在 Linux 和 uClibc 中使用 C。我们有兴趣将其转移到 C++,但我不希望与 libstdc++ 中的链接相关的开销。我的印象是,只要我们不使用 STL 中的任何内容(例如 iostream 或矢量),这是可能的。
如何在不链接到 libstdc++ 的情况下直接 g++ 进行编译?
I'm working on an embedded project that currently uses C in Linux and uClibc. We're interested in moving it to C++, but I don't want the overhead associated with linking in libstdc++. My impression is that this is possible provided we don't use anything from STL, such as iostream or vector.
How does one direct g++ to compile without linking to libstdc++?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
为了完整性和正确性:
For the sake of completeness and correctness:
你可以使用
但是你不能以这种方式使用所有 C++ 功能......
You could use
But you cannot use all c++ features this way...
编译时,仅使用
g++ -c
进行编译。然后进行链接时,使用ld
而不是g++
。但是,这会直接调用链接器,这需要您在命令行上命名所有库(包括 libc 和 libcrt)。或者,如果您使用 g++ 作为“更好的 c”,您可以使用
gcc
进行最终链接步骤(这将自动包含 libc)When you compile, use
g++ -c
to compile only. Then for linking, useld
instead ofg++
. This invokes the linker directly, which requires you to name all your libraries on the command line (including libc and libcrt), however.Alternatively, if you're using g++ as a "better c", you may be able to use
gcc
for your final link step (which will include libc automatically)