首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何与gcc的-fvisibility=hidden不同

如何与gcc的-fvisibility=hidden不同
EN

Stack Overflow用户
提问于 2019-12-24 13:52:27
回答 1查看 909关注 0票数 9

http://gcc.gnu.org/wiki/Visibility称,

-fvisibility=hidden,您告诉GCC,没有显式标记的每个声明都有一个隐藏的可见性。

-fvisibility-inlines-hidden导致所有内联类成员函数都具有隐藏可见性。

当我编译一个非常大的项目时,在我看来,与使用-fvisibility-inlines-hidden相比,在-fvisibility=hidden中添加-fvisibility=hidden确实可以隐藏更多的符号。但我找不到一个极小的例子来显示-fvisibility-inlines-hidden产生效果的确切差别。我也尝试过this示例,但是没有看到后者的效果。

如果我已经在使用-fvisibility-inlines-hidden,那么有人能给我一个最小的例子来说明-fvisibility=hidden仍然是必要的吗?我用的是GCC 5.3.0

EN

回答 1

Stack Overflow用户

发布于 2021-10-12 20:01:52

根据http://gcc.gnu.org/wiki/Visibility

...命令行开关:-fvisibility-inlines-hidden。这会导致所有内联类成员函数都具有隐藏的可见性,从而导致显着的导出符号表大小&二进制大小的减少,尽管不如使用-fvisibility=hidden。但是,-fvisibility-inlines-hidden可以在没有源更改的情况下使用,除非您需要覆盖地址标识对函数本身或任何函数本地静态数据都很重要的内联。

换句话说,如果您已经使用了-fvisibility-inlines-hidden,那么-fvisibility=hidden无法帮助您隐藏更多的符号。

但是,您几乎可以安全地添加-fvisibility-inlines-hidden标志来构建一个程序,其中所有符号都被导出,并且免费地减少了导出符号表,因为排除的符号无论如何都是内联的,因此它们可以在没有导出符号表的其他模块中使用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59469822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档