我通过改变CC,CFALGS LDFLAGS与android ndk交叉编译了libxml2-2.90 for android。并运行config和make,它编译成功。
然后我在native c中编写了基于libxml2的简单示例,并编写了包含上述库的Android.mk文件,并包含编译共享库。
1.我使用了ndk-build脚本并成功编译了本机libxml应用程序
然后我在android java应用程序代码中加载了这两个库
的System.loadLibrary( “XML2”); //libxml2.so.2.9.0
的System.loadLibrary( “samplexml2”); //libsamplexml2.so
但是当我运行我的应用程序时,我得到了android app的以下运行时错误。
Exception Ljava / lang / UnsatisfiedLinkError;在初始化Lcom / example / xmlsample / XmlParse;
时抛出引起:java.lang.UnsatisfiedLinkError:无法加载库:link_image [1891]:37无法为“libsamplexml2.so”加载所需的库'libxml2.so.2'(load_library [ 1093]:未找到库'libxml2.so.2'
请帮助如何正确链接xml2 lib ..
答案 0 :(得分:0)
为Android进行交叉编译时,必须禁用为库设置soname。如果您使用automake,请将-version-info SOME:VERSION:NUMBER替换为-avoid-version,然后重新配置并重新编译库(libxml)和所有依赖项(libsamplexml)。