[Linux] Execution檔shared library 名稱錯誤
Posted on 週二 22 十二月 2015 in Archive
用NDK使用prebuilt library編execution時意外產生奇觀:
$ readelf -d test-audio
Dynamic section at offset 0x35b54 contains 30 entries:
Tag Type Name/Value
0x00000003 (PLTGOT) 0x36ed4
......
0x00000001 (NEEDED) Shared library: [D:/DL/audioWorkspace//obj/local/armeabi-v7a/libkaldifeats.so]
0x00000001 (NEEDED) Shared library: [libvieswip_wrapper.so]
0x00000001 (NEEDED) Shared library: [libvieswip.so]
0x00000001 (NEEDED) Shared library: [libstdc++.so]
0x00000001 (NEEDED) Shared library: [libm.so]
0x00000001 (NEEDED) Shared library: [libc.so]
0x00000001 (NEEDED) Shared library: [libdl.so]
0x0000001a (FINI_ARRAY) 0x360f8
......
Shared library居然出現Window整個檔案路徑!? 而且其他自己包的shared lib都沒事,就只有第一個出意外 一開始還以為是Android.mk寫錯 結果後來發現是第一個lib沒有SONAME的關係
$ readelf -d libkaldifeats.so | grep SONAME
$ (nothing...)
趕緊用-Wl,-soname,libkaldifeats.so
補加SONAME就解決啦~