如何构建.so以便它依赖于其他.so而没有版本号

时间:2011-08-09 23:13:00

标签: android android-ndk

我正在构建一个android共享库,问题是android似乎不支持共享库版本控制。 Android手机上的.so库似乎没有包含其名称中的版本号。

当我正在进行构建时(使用我自己的工具链进行的ndk r6),我正在创建的.so似乎是将依赖项添加到其他.so库中,并在最后添加了版本号。

我的问题是我可以建立我的.so,因为它的依赖性没有列出他们的版本号。

我可以通过展示我希望看到的内容来更好地解释。目前我的dll没有加载,当我做readelf时,我看到了这个:

$ arm-linux-androideabi-readelf.exe -d libthis.so

Dynamic section at offset 0x188fc contains 30 entries:
Tag        Type                         Name/Value
0x00000001 (NEEDED)                     Shared library: [lib1.so.3]
0x00000001 (NEEDED)                     Shared library: [lib2.so.3]
0x00000001 (NEEDED)                     Shared library: [lib3.so.3]
0x00000001 (NEEDED)                     Shared library: [lib4.so.3]
0x00000001 (NEEDED)                     Shared library: [lib5.so.3]
0x00000001 (NEEDED)                     Shared library: [lib6.so.3]
0x00000001 (NEEDED)                     Shared library: [liblog.so]
0x0000000e (SONAME)                     Library soname: [libthis.so.3]
0x00000010 (SYMBOLIC)                   0x0

我希望看到这个

$ arm-linux-androideabi-readelf.exe -d libthis.so

Dynamic section at offset 0x188fc contains 30 entries:
Tag        Type                         Name/Value
0x00000001 (NEEDED)                     Shared library: [lib1.so]
0x00000001 (NEEDED)                     Shared library: [lib2.so]
0x00000001 (NEEDED)                     Shared library: [lib3.so]
0x00000001 (NEEDED)                     Shared library: [lib4.so]
0x00000001 (NEEDED)                     Shared library: [lib5.so]
0x00000001 (NEEDED)                     Shared library: [lib6.so]
0x00000001 (NEEDED)                     Shared library: [liblog.so]
0x0000000e (SONAME)                     Library soname: [libthis.so]
0x00000010 (SYMBOLIC)                   0x0

1 个答案:

答案 0 :(得分:0)

如果有人在这里下降,似乎我需要手动更改配置文件,以便变量soname_spec不引用任何版本信息。

可能有更好的方法,但这可行。