gpt4 book ai didi

c - 在 autoconf 中探测符号可见性扩展的最佳实践

转载 作者:行者123 更新时间:2023-12-03 05:36:31 24 4
gpt4 key购买 nike

我想使用基于 autoconf 的构建系统将内部符号的符号隐藏添加到现有库中。探测 -fvisibility=hidden__attribute__ ((visibility("default"))) 的本地编译器等效项的最佳方法是什么?

最佳答案

我认为没有一个标准的宏,但是您应该能够根据需要扩展它以支持其他编译器,例如Sun 编译器的 __hidden:

AC_CACHE_CHECK([for __attribute__((visibility("hidden")))],
ac_cv_hidden_visibility_attribute, [
echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1; }' > conftest.c
ac_cv_hidden_visibility_attribute=no
if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD);
then
if grep '\.hidden.*foo' conftest.s >/dev/null;
then
ac_cv_hidden_visibility_attribute=yes
fi
fi
rm -f conftest.*
])
if test $ac_cv_hidden_visibility_attribute = yes;
then
AC_DEFINE(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE, 1,
[Define if __attribute__((visibility("hidden"))) is supported.])
fi

生成的config.h:

/* Define if __attribute__((visibility("hidden"))) is supported. */
#define HAVE_HIDDEN_VISIBILITY_ATTRIBUTE 1

关于c - 在 autoconf 中探测符号可见性扩展的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5987219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com