我有可以动态链接stdc ++的库。我想用新文件创建新的共享库,链接它们并静态链接libstdc ++。我试图将-static-libstdc ++添加到编译中,但是它不起作用。我检查了ldd,但我的库仍处于动态链接状态。我该怎么办?
我有可以动态链接stdc ++的库。我想用新文件创建新的共享库,链接它们并静态链接libstdc ++。
这是一个非常糟糕的主意(TM)。当您的二进制文件在具有不同版本libstdc++.so.6
的系统上执行时,您将遇到符号冲突(除非您非常谨慎地将所有相关符号隐藏在共享库中),这可能会导致非常难以调试的崩溃或其他未定义的行为。
我试图将-static-libstdc ++添加到编译中,但是它不起作用。我检查了ldd,但我的库仍处于动态链接中。
首先,将-static-libstdc++
添加到编译会执行无]。您需要添加到linking。
[其次,不清楚您对ldd
进行了什么操作,以及您的库是否依赖于其他共享库。如果是这样,ldd
将显示对libstdc++
的transitive
要查看您的库直接
是否依赖libstdc++.so.6
,请执行以下操作:readelf -d yourlib.so | grep 'NEEDED.*libstdc'