Linux 库函数导出前缀添加指南 - 提高安全性和稳定性
在 Linux 中,库文件中的函数默认是没有前缀的,如果需要为导出函数添加前缀,可以使用 GCC 编译器的 -fvisibility=hidden 和 -fvisibility=default 选项。
具体步骤如下:
- 在库文件中,将需要导出的函数使用 ' attribute((visibility('default'))) ' 修饰,如下所示:
void ' __attribute__((visibility('default'))) ' foo();
- 在编译库文件时,使用 -fvisibility=hidden 选项将库文件中的所有符号隐藏起来,如下所示:
gcc -fvisibility=hidden -shared -o libfoo.so foo.c
- 在编译使用库文件的程序时,使用 -fvisibility=default 选项将需要使用的符号暴露出来,如下所示:
gcc -fvisibility=default -o main main.c -L. -lfoo
这样,在库文件中使用 ' attribute((visibility('default'))) ' 修饰的函数会被添加前缀,避免与其他库文件中的函数冲突。同时,使用 -fvisibility=hidden 和 -fvisibility=default 选项可以提高库文件的安全性和稳定性。
原文地址: https://www.cveoy.top/t/topic/nV5u 著作权归作者所有。请勿转载和采集!