-fvisibility= [ hidden | default ]
符号可见性编译选项,readelf -a xxx.so | grep function_name 可以查看
# readelf -a libtest.so | grep memset_s
10: 0000000000000665 35 FUNC GLOBAL DEFAULT 12 memset_s
54: 0000000000000665 35 FUNC GLOBAL DEFAULT 12 memset_s
-fvisibility=default 默认设置所有符号的可见性为GLOBAL,表示全局可见(ld 链接时可见)
也可以在代码里面单独指定特定符号(函数)的可见性:
__attribute__ ((visibility ("hidden"))) int memset_s(int *a) {
*a = 0;
}
__attribute__ ((visibility ("default"))) int memset_s(int *a) {
*a = 0;
}