我有一个共享库项目,该项目由4个静态库(.a)和一个对象(.o)文件构建。我试图添加-fvisibility=hidden选项以将输出中的符号限制为仅使用__attribute__在源中标记的符号。
我已将该-fvisibility=hidden选项添加到.so项目(涵盖.o文件)和项目的编译选项中.a。
目标文件中的符号已从final中删除.so。但是,.a项目中的符号都仍在最终.so文件中。将-fvisibility=hidden选项添加到.so链接命令无效。
我究竟做错了什么?
我的目的是从.so库的接口函数之外的所有符号中删除。
编辑:我实际上使用了一个版本映射来解决这个问题。但是,随着外部符号的更改,它需要继续维护版本脚本。接受的答案有一个更好的主意。