创建Windows DLL时,可以轻松选择导出的符号(使用dllexport)。在这种情况下,未导出的符号在库外部不可见。如何在Linux上获得相同的功能? 换一种说法: 假设我在一个项目中有10个函数。其中三个应该导出,其余7个是辅助函数,不能从库API中使用。我如何以这种方式创建SO文件,这让我能够实现?
答案 0 :(得分:1)
默认情况下,在Linux / GCC上导出所有内容(当然,这取决于语言规则:永远不会导出匿名命名空间中的内容)。
如果要停止导出符号,可以使用__attribute__((__visibility__("hidden")))
。例如:
__attribute__((__visibility__("hidden"))) void myPrivateFunction();