我为android编译了libhuaweigeneric ril库并生成了三个文件:
目标共享库:libhuawaweigeneric ril(…/linked/libhuaweigeneric ril.so)
目标符号:libhuaweigeneric ril(…/symbols/system/lib/libhuaweigeneric ril.so)
目标条带:libhuaweigeneric ril(…/lib/libhuaweigeneric ril.so)
有人能解释一下这些文件是什么吗?哪一个是android的(system/lib/)?
最佳答案
我没有试着编译这个库,但是根据我在unix系统上的知识和经验,这里有一些信息可以提供给您。
基本上,共享库是程序(或应用程序)在运行时加载的库。它允许程序通过调用共享库中包含的函数来执行额外的操作。
第一个文件是库的标准版本。它包含您编译的源文件中声明的所有符号(函数和变量)。
第二个文件是第一个文件(或第三个文件)上的符号链接,这在unix系统上很常见。创建共享库时,通常使用版本号创建它(例如“awesomelib.so.1.0”),并创建一个具有指向它的通用名称的符号链接(在我们的示例中为“awesomelib.so”)。
由于共享库注定要在运行时加载,如果在代码中使用包含版本号的名称引用它,则需要在每次库更新时更新代码。但如果使用符号链接名称,则无需在每次库更新时修改代码,我们只需更新符号链接,使其指向新版本的库。
最后,第三个文件是第一个文件的剥离版本。剥离意味着一些符号(例如调试信息、未使用的函数或变量)已从第一个文件中删除,以便使库更轻。
在您的情况下,由于库的名称中没有版本号,我建议您在开发时使用第一个版本号,在应用程序的发行版本中使用第三个版本号。
以下是一些链接以获取更多信息:
About the shared library file format (elf)
About stripping
希望有帮助!