为什么我们在 gcc 中需要 -rdynamic 选项?

Why do we need -rdynamic option in gcc?

默认情况下,所有符号都导出为动态 table,那么我们为什么要使用 -rdynamic 标志?即使我们通过属性/-fvisibility=hidden - -rdynamic 隐藏了一些符号也不会改变结果,它不会取消隐藏以前隐藏的符号。那有什么意义呢?

符号仅默认从共享库中导出。 -rdynamic 告诉链接器对可执行文件做同样的事情。通常这是一个坏主意,但有时你想为动态加载的插件提供 API,然后这就派上用场了(即使使用显式 visibility annotations, version script or dynamic export file 更好)。