我是昵称
2024-03-13 21:56 deepin
在 Linux 系统下,可以通过使用 `-fvisibility=hidden` 编译选项来限制动态库(.so 文件)中的符号导出。这个编译选项告诉编译器仅导出显式标记为可见的符号,其他符号将被视为隐藏的,从而可以有效地限制动态库中的符号导出。
具体步骤如下:
1. 在编译动态库时,使用 `-fvisibility=hidden` 编译选项。
2. 对于需要导出的符号,可以使用 `__attribute__((visibility("default")))` 进行显式标记,使其能够被正确导出。
这样做可以有效地减少动态库中符号的导出,提高了代码的安全性和可维护性。
以上内容来自 ChatGPT,仅供参考。
Reply Like 0 View the author
开发了一个动态库,在编译中使用
-fvisibility=hidden
用来限制符号的导出,对于需要导出的符号使用__attribute__ ((visibility ("default")))
,结果是对于自己在动态库中定义的符号使用限制生效了,但是对于自己间接引用的符号依然是GLOBAL权限;请问如何将动态库内直接定义的符号或间接使用的符号,权限都设置为LOCAL?