linux - 如何在共享库中的链接时(不是加载时)解析弱符号

标签 linux g++ shared-libraries

我又遇到了共享库在其他地方找到一些符号的事故 比里面本身。 我怎样才能防止这种情况发生? 我已经在使用 -fvisibility=hidden。 看起来所有模板函数都被编译为弱符号,并且仅在加载时解析。 我已经在使用 RTLD_DEEPBIND 来避免这个问题——但是 purify 忽略了这个选项。

最佳答案

这个问题的解决方案似乎是来自 GNU binutils 的 objcopy 命令。 它允许改变符号属性。 使用的选项可能是 --localize-symbols=文件名 或者 --globalize-symbols=文件名 另一种方法是使用 g++ 编译器选项 -fno-weak——但是 g++ 手册页不鼓励使用这个选项——我不确定为什么——来自 C++ 库的某些符号可能最终必须是弱的。

关于linux - 如何在共享库中的链接时(不是加载时)解析弱符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20480129/

相关文章:

c# - 引用库二进制 - 调试或发布版本?

c++ - 有没有人能够正确使用 libsensors?

c++ - 链接的可执行文件中缺少静态库中的符号

C++ - vector 分割错误

c++ - "make"使用模式匹配时失败

c++ - 装饰库中的函数

javascript - Google CDN 服务器托管库 VS 本地托管

linux - 线程和进程的内存分配

linux - 静态变量没有被初始化

c++ - Apache thrift 做不到