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

时间:2013-12-09 20:30:46

标签: linux g++ shared-libraries

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

1 个答案:

答案 0 :(得分:0)

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