在 autoconf 中探测符号可见性扩展的最佳实践
我想使用基于 autoconf 的构建系统将内部符号的符号隐藏添加到现有库中。探测 -fvisibility=hidden
和 __attribute__ ((visibility("default")))
的本地编译器等效项的最佳方法是什么?
I'd like to add symbol hiding for internal symbols to an existing library with an autoconf-based build system. What's the best way to probe for the local compiler's equivalent for -fvisibility=hidden
and __attribute__ ((visibility("default")))
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我认为没有一个标准的宏,但是您应该能够根据需要扩展它以支持其他编译器,例如 Sun 编译器的
__hidden
:生成的
config .h
:I don't think there is a standard macro for this, but here is something which you should be able to extend to support other compilers as needed, e.g.
__hidden
for Sun compilers:The resulting
config.h
:对于
-fvisibility=hidden
我使用这个 autoconf-archive 宏:请参阅 https://www.gnu.org/software/autoconf-archive/ax_compiler_flags.html,
但是 https://www.gnu.org/software/autoconf-archive/ax_append_compile_flags .html 或 http://www.gnu.org/software也可以使用 /autoconf-archive/ax_gcc_func_attribute.html。 AX_COMPILER_FLAGS 还可以完成您需要的有关警告标志的大部分操作。对于
$ax_is_release
,请参阅AX_IS_RELEASE
。对于属性,我使用此检查:
For
-fvisibility=hidden
I use this autoconf-archive macro:See https://www.gnu.org/software/autoconf-archive/ax_compiler_flags.html,
but https://www.gnu.org/software/autoconf-archive/ax_append_compile_flags.html or http://www.gnu.org/software/autoconf-archive/ax_gcc_func_attribute.html can also be used. AX_COMPILER_FLAGS does most of what you'll need regarding warnings flags also. For the
$ax_is_release
seeAX_IS_RELEASE
also there.For the attribute I use this check:
您可以尝试将
与宏__hiden
一起使用You can try to use
<sys/cdefs.h>
with macro__hiden