gpt4 book ai didi

android - 目标 SharedLib 与目标 Symbolic 和目标 Strip 之间的区别

转载 作者:太空宇宙 更新时间:2023-11-03 11:10:18 25 4
gpt4 key购买 nike

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

  • 目标 SharedLib:libhuaweigeneric-ril(.../LINKED/libhuaweigeneric-ril.so)
  • 目标 Symbolic:libhuaweigeneric-ril (.../symbols/system/lib/libhuaweigeneric-ril.so)
  • 目标 strip :libhuaweigeneric-ril (.../lib/libhuaweigeneric-ril.so)

谁能解释一下这些文件是什么?哪个适用于 android(system/lib/)?

最佳答案

我还没有尝试编译这个库,但是根据我在 UNIX 系统上的知识和经验,这里有一些信息可以提供给你。

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

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

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

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

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

这里有一些链接可以获取更多信息:

About the shared library file format (elf)

About stripping

希望对您有所帮助!

关于android - 目标 SharedLib 与目标 Symbolic 和目标 Strip 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26440202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com