我正在尝试构建一个具有本机组件的旧Android项目。
当我尝试构建项目时,出现以下错误:
Task :app:externalNativeBuildDebug FAILED
Build myappNative x86
[1/1] Linking CXX shared library ../../../../build/intermediates/cmake/debug/obj/x86/libmyappNative.so
FAILED: : && /Users/Can/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=i686-none-linux-android16 --gcc-toolchain=/Users/Can/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Users/Can/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -fno-addrsig -Wa,--noexecstack -Wformat -Werror=format-security -O0 -fno-limit-debug-info -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -static-libstdc++ -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -Wl,-z,noexecstack -shared -Wl,-soname,libmyappNative.so -o ../../../../build/intermediates/cmake/debug/obj/x86/libmyappNative.so CMakeFiles/myappNative.dir/src/main/cpp/src/com_myapp_system_Native.cpp.o CMakeFiles/myappNative.dir/src/main/cpp/src/sha256.c.o -llog -latomic -lm "/Users/Can/Library/Android/sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86/libgnustl_static.a" && :
clang++: error: no such file or directory: '/Users/Can/Library/Android/sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86/libgnustl_static.a'
ninja: build stopped: subcommand failed.
这很明显:
error: no such file or directory: '/Users/Can/Library/Android/sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86/libgnustl_static.a'
当我转到
/Users/Can/Library/Android/sdk/ndk-bundle/sources/cxx-stl/
时,只有以下内容:llvm-libc++
llvm-libc++abi
system
没有这样的
gnu-libstdc++
目录。我究竟做错了什么?更新:同时,根据Alex Cohn的建议,我已切换回旧的NDK r17c。尽管NDK已过时,但它是可行的,但这只是暂时的解决方法,而不是长期的解决方案。
最佳答案
自该项目发布以来,NDK has dropped gnustl。您仍然可以下载NDK r.17或更早版本,或者可以更改项目以使用libc ++ _ static。