问题描述
默认情况下,所有符号都导出到动态表,那么为什么要使用 -rdynamic
标志?即使我们通过属性/ -fvisibility = hidden
- -rdynamic
隐藏了一些符号,它也不会改变结果不要取消隐藏以前隐藏的符号。那么,这有什么意义呢?
By default all symbols are exported to dynamic table, so why would we use -rdynamic
flag? Even if we hide some symbols via attributes/-fvisibility=hidden
- -rdynamic
doesn't change result, it doesn't unhide previously hidden symbols. So what's the point in it?
推荐答案
默认情况下,符号仅从共享库中导出。 -rdynamic
告诉链接器对可执行文件执行相同的操作。通常,这是一个坏主意,但有时您想为动态加载的插件提供API,然后这样做就很方便了(尽管使用显式,或)。
Symbols are only exported by default from shared libraries. -rdynamic
tells linker to do the same for executables. Normally that's a bad idea but sometimes you want to provide APIs for dynamically loaded plugins and then this comes handy (even though one much better off using explicit visibility annotations, version script or dynamic export file).
这篇关于为什么在gcc中需要-rdynamic选项?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!