libs突然无法加载动态链接器(NDK)

时间:2011-08-12 00:00:00

标签: android c++ gcc g++ android-ndk

我已经开发了一个NDK应用程序很长一段时间了,它一直运行良好。然而,今天应用程序随机决定不再启动,在我进行一些名义更改后编译它。它是由加载应用程序主库的神秘问题引起的。这是一些日志输出:

08-11 18:38:11.220 D/dalvikvm( 1237): Added shared lib /mnt/asec/com.audia.rta-1/lib/libqtandroid.so 0x40513bd8
08-11 18:38:11.220 D/dalvikvm( 1237): No JNI_OnLoad found in /mnt/asec/com.audia.rta-1/lib/libqtandroid.so 0x40513bd8, skipping init
08-11 18:38:11.220 D/dalvikvm( 1237): Trying to load lib /mnt/asec/com.audia.rta-1/lib/librta.so 0x40513bd8
08-11 18:38:11.260 D/AndroidRuntime( 1237): Shutting down VM
08-11 18:38:11.260 W/dalvikvm( 1237): threadid=1: thread exiting with uncaught exception (group=0x40015560)
08-11 18:38:11.260 E/AndroidRuntime( 1237): FATAL EXCEPTION: main
08-11 18:38:11.260 E/AndroidRuntime( 1237): java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1311]:    67 cannot locate '_ZNSaIcEC1Ev'...
08-11 18:38:11.260 E/AndroidRuntime( 1237): 
08-11 18:38:11.260 E/AndroidRuntime( 1237):     at java.lang.Runtime.loadLibrary(Runtime.java:434)
08-11 18:38:11.260 E/AndroidRuntime( 1237):     at java.lang.System.loadLibrary(System.java:554)
08-11 18:38:11.260 E/AndroidRuntime( 1237):     at com.audia.rta.RTA.onCreate(RTA.java:139)

根据某些Google搜索结果,_ZNSaIcEC1Evlibstdc++的一部分。我已经检查过,它在构建过程中被链接,g++被用于链接。

奇怪的是,恢复到应用程序的较旧apk修复了问题,但编译旧版本并安装不能解决问题。我的构建系统中的所有内容都被检入版本控制,我已经完成了几个干净的构建。我的所有版本都在今天工作,然后他们就停止了工作。我没有升级或安装任何东西;它发生在我正在测试新代码的过程中。发生了什么事?

更新:从新签出的副本构建无法解决问题。

更新2 :我有没有办法追踪到该符号的链接,可能是objdump?也许这可以提供一些线索。

1 个答案:

答案 0 :(得分:0)

我最终使用全新的NDK安装编译所有内容,并且它有效。就好像旧的一个被腐蚀了,虽然我不知道怎么做。

这也是从r5b升级到r6,所以也许它与NDK版本有关。