我又遇到了另一个共享库在其他地方找到符号的事故 比在里面本身。 我怎么能阻止这个? 我已经在使用-fvisibility = hidden。 看起来所有模板函数都编译为弱符号,并且仅在加载时解析。 我已经在使用RTLD_DEEPBIND来避免这个问题了 - 但是purify忽略了这个选项。
答案 0 :(得分:0)
似乎这个问题的解决方案是来自GNU binutils的objcopy命令。 它允许人们改变符号属性。 可能的选择 --localize符号=文件名 要么 --globalize符号=文件名 另一种方法是使用g ++编译器选项-fno-weak - 但是g ++手册页不鼓励使用这个选项 - 我不确定为什么 - 可能某些来自C ++库的符号必须最终变弱。 / p>