当其他 linked 库 link stdc++ 为动态时,如何将 libstdc++ linking 设置为静态?
How to set libstdc++ linking to static when other linked library link stdc++ as dynamic?
我有 link stdc++
动态的库。我想用新文件创建新的共享库,link 它们和 link libstdc++
静态。
我试图将 -static-libstdc++
添加到编译中,但它不起作用。我检查了 ldd
,我的库仍然是动态的 linked。
我该怎么做?
I have libraries that link stdc ++ dynamically. I want to create new shared library with new files, link them and link libstdc++ statically.
那是一个非常糟糕的主意(TM)。当您的二进制文件在具有不同版本 libstdc++.so.6
的系统上执行时,您将遇到符号冲突(除非您非常小心地将所有相关符号隐藏在您的共享库中),这可能会导致非常难以调试的崩溃或其他未定义的行为。
I tried to add -static-libstdc++ to compilation but it doesn't work. I checked with ldd and my library is still dynamically linked.
首先,将 -static-libstdc++
添加到 compilation nothing。您需要添加到 linking.
其次,不清楚您 运行 ldd
在做什么,以及您的库是否依赖于其他共享库。如果是,ldd
将显示 t运行sitive 对 libstdc++
的依赖性,这完全是预期的。
要查看您的库是否直接依赖于libstdc++.so.6
,请执行以下操作:
readelf -d yourlib.so | grep 'NEEDED.*libstdc'
我有 link stdc++
动态的库。我想用新文件创建新的共享库,link 它们和 link libstdc++
静态。
我试图将 -static-libstdc++
添加到编译中,但它不起作用。我检查了 ldd
,我的库仍然是动态的 linked。
我该怎么做?
I have libraries that link stdc ++ dynamically. I want to create new shared library with new files, link them and link libstdc++ statically.
那是一个非常糟糕的主意(TM)。当您的二进制文件在具有不同版本 libstdc++.so.6
的系统上执行时,您将遇到符号冲突(除非您非常小心地将所有相关符号隐藏在您的共享库中),这可能会导致非常难以调试的崩溃或其他未定义的行为。
I tried to add -static-libstdc++ to compilation but it doesn't work. I checked with ldd and my library is still dynamically linked.
首先,将 -static-libstdc++
添加到 compilation nothing。您需要添加到 linking.
其次,不清楚您 运行 ldd
在做什么,以及您的库是否依赖于其他共享库。如果是,ldd
将显示 t运行sitive 对 libstdc++
的依赖性,这完全是预期的。
要查看您的库是否直接依赖于libstdc++.so.6
,请执行以下操作:
readelf -d yourlib.so | grep 'NEEDED.*libstdc'