在生成可执行文件时,我们是否同时使用 libstdc++.a 和 libstdc++.so

Do we use libstdc++.a and libstdc++.so at the same time when generating executable?

本文关键字:libstdc++ so 是否 可执行文件 我们      更新时间:2023-10-16

如果我选择这样做:

gcc my.cpp -lstdc++

它与libstdc++.so链接,对吧?但是代码中有一些 c/c++ 初始化部分(全局/静态变量/对象、atexit() 函数等),似乎它们也应该需要链接到 libstdc++.a 文件。

所以我的问题是,即使我指定与 .so 文件链接,链接命令是否总是出于某种原因使用 libstdc++.a?

谢谢。

gcc my.cpp -lstdc++

这通常是错误的做法。相反,您应该这样做:

g++ my.cpp

它与libstdc++.so链接,对吧?

取决于 GCC 的配置和安装方式,但通常是。

但是代码中有一些 c/c++ 初始化部分(全局/静态变量/对象、atexit() 函数等),似乎它们也应该需要链接到 libstdc++.a 文件。

这是错误的。你从哪里得到这种错误的印象?

所以我的问题是,链接命令是否总是使用 libstdc++.a

不,通常不会。