我的全局符号存在问题。我有一个使用默认可见性编译的类(其余代码是隐藏的)和非内联。可执行文件也与-E标志链接。这个类是从dlopen加载的库中调用的;所以它的符号必须是GLOBAL。
当我查看.o文件时,事情看起来不错: FUNC GLOBAL DEFAULT
然而在最后的二进制文件中,相同的函数变为: FUNC LOCAL DEFAULT
我认为gc-sections导致了这一点,我不能不使用它。有没有办法告诉gc-sections忽略公共API?
答案 0 :(得分:0)
然而在最后的二进制文件中,同样的函数变为:FUNC LOCAL DEFAULT
这很有可能发生,因为链接器命令行上有一些东西告诉链接器这样做。也许你有一个链接器版本脚本来执行此操作?
我认为gc-sections导致了这个
这种猜测是不太可能的。