我们在armeabi-v7a上使用hugin应用程序创建了静态库,并尝试使用Cmakelist将其与Android中的共享库连接。我们可以看到库及其标头没有任何问题,但是当我尝试对其进行编译时,它失败并显示以下错误:



生成命令失败。
使用参数{--build .... \ OpenCVExample-master \ app.externalNativeBuild \ cmake \ debug \ arm64-v8a --target native执行过程.... \ cmake \ 3.6.3155560 \ bin \ cmake.exe时出错-lib}
[1/2]构建CXX对象CMakeFiles / native-lib.dir / src / main / cpp / native-lib.cpp.o
[2/2]链接CXX共享库........ \ build \ intermediates \ cmake \ debug \ obj \ arm64-v8a \ libnative-lib.so
失败:cmd.exe / C“ cd。&& .... \ ndk-bundle \ toolchains \ llvm \ prebuilt \ windows-x86_64 \ bin \ clang ++。exe --target = aarch64-none-linux-android --gcc-工具链= .. / .. / ndk-bundle / toolchains / aarch64-linux-android-4.9 / prebuilt / windows-x86_64 --sysroot = .. / .. / ndk-bundle / platforms / android-21 / arch-arm64 -fPIC -g -DANDROID-功能部分-funwind表-fstack-protector-strong-无规范前缀-Wa,-noexecstack -Wformat -Werror = format-security -g -DANDROID -ffunction-sections -funwind -tables -fstack-protector-strong-无规范前缀-Wa,-noexecstack -Wformat -Werror = format-security -std = c ++ 11 -frtti -fexceptions -std = gnu ++ 11 -O0 -fno -limit-debug-info -O0 -fno-limit-debug-info -Wl,-build-id -Wl,-warn-shared-textrel -Wl,-致命警告-Wl,-no-undefined -Wl,-z,noexecstack-带参数的参数-Wl,-z,relro -Wl,-z,现在-Wl,-build-id -Wl,-警告共享文本-Wl,-致命警告-Wl,-未定义-Wl,-z,noexecstack-已引用参数-Wl,-z,relro -Wl,-z,现在-共享-Wl,-soname,lib本机lib.so -o ........ \ build \ intermediates \ cmake \ debug \ obj \ arm64-v8a \ libnative-lib.so CMakeFiles / native-lib.dir / src / main / cpp / native -lib.cpp.o ../../../../src/main/jniLibs/arm64-v8a/libhugin.a ../../../../s./src/main/jniLibs/arm64 -v8a / libopencv_java3.so -lm“ .... \ ndk-bundle / sources / cxx-stl / gnu-libstdc ++ / 4.9 / libs / arm64-v8a / libgnustl_static.a” && cd。
../../../../src/main/jniLibs/arm64-v8a/libhugin.a:错误添加符号:文件格式错误
clang ++。exe:错误:链接器命令失败,退出代码为1(使用-v查看调用)
ninja:构建已停止:子命令失败。



我们知道我们的设备使用arm64-v8a ABI,但是在将静态库编译为该体系结构方面存在严重问题,因此我们使用armeabi-v7a。根据下面的这篇文章,它应该是兼容的。

Is arm64-v8a compatible with armeabi-v7a?

您是否知道我们的静态库或项目有什么问题?非常感谢你

最佳答案

armeabi-v7a apk将在arm64平台上运行;但是要编译成arm64 apk,需要arm64 lib才能编译成arm64 app(apk)

关于android - 我们的Android静态库格式错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45707048/

10-10 23:07