全局符号在链接处变为本地符号

时间:2014-09-09 22:55:32

标签: c++ linker dynamic-loading

我的全局符号存在问题。我有一个使用默认可见性编译的类(其余代码是隐藏的)和非内联。可执行文件也与-E标志链接。这个类是从dlopen加载的库中调用的;所以它的符号必须是GLOBAL。

当我查看.o文件时,事情看起来不错:    FUNC GLOBAL DEFAULT

然而在最后的二进制文件中,相同的函数变为:    FUNC LOCAL DEFAULT

我认为gc-sections导致了这一点,我不能不使用它。有没有办法告诉gc-sections忽略公共API?

1 个答案:

答案 0 :(得分:0)

  

然而在最后的二进制文件中,同样的函数变为:FUNC LOCAL DEFAULT

这很有可能发生,因为链接器命令行上有一些东西告诉链接器这样做。也许你有一个链接器版本脚本来执行此操作?

  

我认为gc-sections导致了这个

这种猜测是不太可能的。