[software development] 如何限制动态库so符号导出?
Tofloor
poster avatar
lin.
deepin
2024-03-13 15:54
Author

开发了一个动态库,在编译中使用 -fvisibility=hidden 用来限制符号的导出,对于需要导出的符号使用 __attribute__ ((visibility ("default"))),结果是对于自己在动态库中定义的符号使用限制生效了,但是对于自己间接引用的符号依然是GLOBAL权限;

请问如何将动态库内直接定义的符号或间接使用的符号,权限都设置为LOCAL?
image.png

Reply Favorite View the author
All Replies
我是昵称
deepin
2024-03-13 21:56
#1
在 Linux 系统下,可以通过使用 `-fvisibility=hidden` 编译选项来限制动态库(.so 文件)中的符号导出。这个编译选项告诉编译器仅导出显式标记为可见的符号,其他符号将被视为隐藏的,从而可以有效地限制动态库中的符号导出。 具体步骤如下: 1. 在编译动态库时,使用 `-fvisibility=hidden` 编译选项。 2. 对于需要导出的符号,可以使用 `__attribute__((visibility("default")))` 进行显式标记,使其能够被正确导出。 这样做可以有效地减少动态库中符号的导出,提高了代码的安全性和可维护性。 以上内容来自 ChatGPT,仅供参考。
Reply View the author
乾豫恒益
deepin
2024-03-14 15:48
#2

学习了😁

Reply View the author