本文介绍了为什么在gcc中需要-rdynamic选项?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

默认情况下,所有符号都导出到动态表,那么为什么要使用 -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选项?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-03 20:48
查看更多