gpt4 book ai didi

c++ - 当其他链接库将 stdc++ 链接为动态时,如何将 libstdc++ 链接设置为静态?

转载 作者:行者123 更新时间:2023-11-30 04:43:43 42 4
gpt4 key购买 nike

我有动态链接 stdc++ 的库。我想用新文件创建新的共享库,链接它们并静态链接 libstdc++

我试图将 -static-libstdc++ 添加到编译中,但它不起作用。我检查了 ldd,我的库仍然是动态链接的。

我该怎么做?

最佳答案

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++ 添加到编译没有任何作用。您需要添加到链接

其次,不清楚您在什么上运行 ldd,以及您的库是否依赖于其他共享库。如果是这样,ldd 将显示对 libstdc++传递 依赖性,这完全符合预期。

要查看您的库是否直接依赖于libstdc++.so.6,请执行以下操作:

readelf -d yourlib.so | grep 'NEEDED.*libstdc'

关于c++ - 当其他链接库将 stdc++ 链接为动态时,如何将 libstdc++ 链接设置为静态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58099244/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com