so库文件控制导出符号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了so库文件控制导出符号相关的知识,希望对你有一定的参考价值。

在Windows下生成DLL时,可以使用dll_export来将需要对外的符号导出来。

__declspec(dllimport)

而在Linux中,默认是所有的符号都是导出的,只有使用了相应的attribute才能将不想导出的(库内部使用的)的符号隐藏起来。

__attribute__((visibility("hidden"))) 

下面来对比一下,前面一段是默认的输出,后面一段是在类前添加了hidden限制的输出:
技术分享图片

以上是关于so库文件控制导出符号的主要内容,如果未能解决你的问题,请参考以下文章

Kivy Buildozer:.so lib 文件缺少调试符号

安卓深度探索(卷一)第八章

未从 libstdc++.a(libstdc++.so.6) 导出对“_ZNSt5__padIcSt11char_traitsIcEE6_S_padERSt8ios_basecPcPKcllb”符号的

即使符号存在于 .so 文件中也无法加载符号? [复制]

so文件简单的导出使用

ImportError:使用 SWIG 时 _...so 文件中的未定义符号