![](/img/trans.png)
[英]C++ -fvisibility=hidden -fvisibility-inlines-hidden
[英]How -fvisibility-inlines-hidden differs from -fvisibility=hidden in gcc
根据http://gcc.gnu.org/wiki/Visibility ,
使用
-fvisibility=hidden
,您是在告诉 GCC,每个未显式标记为可见性属性的声明都具有隐藏的可见性。
和
-fvisibility-inlines-hidden
导致所有内联类成员函数具有隐藏可见性
当我编译一个非常大的项目时,在我看来,与使用-fvisibility=hidden
相比,将-fvisibility-inlines-hidden
与-fvisibility=hidden
一起添加确实可以隐藏更多符号。 但我找不到一个最小的例子来显示-fvisibility-inlines-hidden
的确切区别。 我也试过这个例子,但没有看到后者的效果。
有人可以给我看一个最小的例子,如果我已经在使用-fvisibility=hidden
,那么-fvisibility-inlines-hidden
仍然是必要的吗? 我正在使用 GCC 5.3.0
根据http://gcc.gnu.org/wiki/Visibility
... 命令行开关:
-fvisibility-inlines-hidden
。 这会导致所有内联类成员函数都具有隐藏的可见性,从而导致导出符号表大小和二进制大小的显着减少,尽管不如使用-fvisibility=hidden
。 但是,-fvisibility-inlines-hidden
可以在不更改源的情况下使用,除非您需要为地址标识对函数本身或任何函数本地静态数据很重要的内联覆盖它。
换句话说,如果您已经使用-fvisibility=hidden
, -fvisibility-inlines-hidden
无法帮助您隐藏更多符号。
但是您几乎可以安全地添加-fvisibility-inlines-hidden
标志来构建一个程序,其中导出所有符号并免费减少导出符号表,因为排除的符号无论如何都是内联的,因此它们可以在没有导出符号的其他模块中使用桌子。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.