如何从linux SO库中仅导出某些函数

How to export only certain functions from linux SO library?

本文关键字:函数 linux SO      更新时间:2023-10-16

创建Windows DLL时,可以很容易地选择导出的符号(使用dllexport)。在这种情况下,未导出的符号在库外不可见。如何在Linux上获得相同的功能?换句话说:假设我在一个项目中有10个函数。其中三个应该被导出,剩下的7个是不应该从库API中使用的辅助函数。我如何以这种方式创建SO文件,让我实现这一点?

在Linux/GCC上,默认情况下会导出所有内容(当然,这取决于语言规则:匿名命名空间中的内容永远不会导出)。

如果要停止导出符号,可以使用__attribute__((__visibility__("hidden")))。例如:

__attribute__((__visibility__("hidden"))) void myPrivateFunction();