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

时间:2013-08-20 19:18:17

标签: c++ linux dll c++11 shared-libraries

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

1 个答案:

答案 0 :(得分:1)

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

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

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