4

我为android编译了libhuaweigeneric-ril库并生成了三个文件:

  • 目标 SharedLib: libhuaweigeneric-ril(.../LINKED/libhuaweigeneric-ril.so)
  • 目标符号:libhuaweigeneric-ril (.../symbols/system/lib/libhuaweigeneric-ril.so)
  • 目标地带:libhuaweigeneric-ril (.../lib/libhuaweigeneric-ril.so)

任何机构都可以解释这些文件是什么?哪一个适用于 android(system/lib/)?

4

1 回答 1

0

我没有尝试编译该库,但这里有一些我可以根据我对 UNIX 系统的知识和经验为您提供的信息。

基本上,共享库是由程序(或应用程序)在运行时加载的库。它允许程序通过调用共享库中包含的函数来执行额外的操作。

第一个文件是库的标准版本。它包含您编译的源文件中声明的所有符号(函数和变量)。

第二个文件是第一个文件(或第三个文件)上的符号链接,这在 Unix 系统上很常见。创建共享库时,您通常使用版本号创建它(例如“awesomelib.so.1.0”),并使用指向它的通用名称创建符号链接(在我们的示例中为“awesomelib.so”)。由于共享库注定要在运行时加载,如果您在代码中使用包含版本号的名称引用它,则需要在每次库更新时更新您的代码。但是,如果您使用符号链接名称,则无需在每次库更新时修改代码,您只需更新符号链接,使其指向新版本的库。

最后,第三个文件是第一个文件的剥离版本。剥离意味着一些符号(例如调试信息,或未使用的函数或变量)已从第一个文件中删除,以使库更轻。

在您的情况下,由于您的库名称中没有版本号,我建议您在开发时使用第一个,而在应用程序的发布版本中使用第三个。

以下是一些链接以获取更多信息:

关于共享库文件格式(elf)

关于剥离

希望它有所帮助!

于 2014-12-12T16:30:46.533 回答