Android NDK - arm-linux-androideabi-g++: not found
Android NDK - arm-linux-androideabi-g++: not found
我正在尝试在我刚刚安装的新 Ubuntu 中为 Android 目标构建C++ POCO 库。
我已经在/home/user/dev/Android/android-ndk-r9-x86
中安装了Android NDK,并使用以下命令在环境变量中添加了NDK的路径:
export ANDROID_NDK_ROOT=/home/user/dev/Android/android-ndk-r9-x86
要构建库,我首先移动到 POCO 库的根目录,并使用以下命令对其进行配置:
./configure --omit=NetSSL_OpenSSL,Crypto,Data/ODBC,Data/MySQL --static --config=Android
这样它就可以编译静态的.a库,不编译我不想要的模块,而是为Android目标编译。
但是比调用 make 会导致以下错误:
user@user-VirtualBox:~/dev/Lib/POCO/poco-1.6.1$ make
make -C /home/user/dev/Lib/POCO/poco-1.6.1/Foundation
make[1]: Entering directory `/home/user/dev/Lib/POCO/poco-1.6.1/Foundation'
** Compiling src/ArchiveStrategy.cpp (debug, static)
arm-linux-androideabi-g++ -Iinclude -I/home/user/dev/Lib/POCO/poco-1.6.1/CppUnit/include -I/home/user/dev/Lib/POCO/poco-1.6.1/CppUnit/WinTestRunner/include -I/home/user/dev/Lib/POCO/poco-1.6.1/Foundation/include -I/home/user/dev/Lib/POCO/poco-1.6.1/XML/include -I/home/user/dev/Lib/POCO/poco-1.6.1/JSON/include -I/home/user/dev/Lib/POCO/poco-1.6.1/Util/include -I/home/user/dev/Lib/POCO/poco-1.6.1/Net/include -mthumb -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 -frtti -fexceptions -DPOCO_BUILD_HOST=user-VirtualBox -DPOCO_ANDROID -DPOCO_NO_FPENVIRONMENT -DPOCO_NO_WSTRING -DPOCO_NO_SHAREDMEMORY -g -D_DEBUG -c src/ArchiveStrategy.cpp -o /home/user/dev/Lib/POCO/poco-1.6.1/Foundation/obj/Android/armeabi/debug_static/ArchiveStrategy.o
sh: 1: arm-linux-androideabi-g++: not found
make[1]: *** [/home/user/dev/Lib/POCO/poco-1.6.1/Foundation/obj/Android/armeabi/debug_static/ArchiveStrategy.o] Error 127
make[1]: Leaving directory `/home/user/dev/Lib/POCO/poco-1.6.1/Foundation'
make: *** [Foundation-libexec] Error 2
Make 似乎找不到用于 Android 的编译器,我不知道为什么?我错过了什么?我在"安装"NDK 时忘记了什么吗?
谢谢。
您收到的错误是由缺少工具链调用引起的 - 相反,arm-linux-androideabi-g++
命令/可执行文件/二进制文件无处可寻。
幸运的是,我们可以通过安装独立工具链来解决这个问题 - 它实际上具有您缺少的确切内容,一个通用的交叉编译器arm-linux-androideabi
而不是其他一些更晦涩的,特定于供应商/平台的交叉编译器/工具链,例如 armv7a-marvell-linux-android
这是 marvell 使用的,或者arm-linux-android
是 Clang 使用的。有关 Clang 的更多信息,请查看此处。不过我可能是错的,Clang实际上开箱即用地生成了一个arm-linux-androideabi
工具链,但我不确定。我知道你可以很容易地使用它,我只是不确定它是否可以"开箱即用",这就是你正在寻找的。"其余工作"只是一些路径导出 - 但仍然如此。我们的目标是在这里找到最懒惰的解决方案。
独立工具链应该足以满足您的任务,因此请尝试尽可能多地使用它而不是任何其他交叉编译解决方案。
但是,如果您喜欢冒险 - 您可以使用crosstool-ng
工具自由制作自己的交叉编译器(或整个工具链!但是,请尝试坚持使用Linaro libc分支;个人经验告诉我,一个人以某种方式效果最好,造成的问题/浪费时间最少。
另外,请确保为您的架构(架构(和操作系统下载正确的版本,32位与64位在这里也很重要。经过长时间的讨论,我们意识到这是一个"32位与64位"的问题。这里有一个链接可以阅读更多关于它的信息。
- OpenCV Android C++ imwrite not found
- 解决"ld: library not found for -ltensorflow_framework.2.3.0"
- 加载与引用 .NET DLL 位于同一文件夹中的引用的 .NET DLL 时"Not found"异常
- C++初学者:为什么我的编译器根据我的循环返回"name not found"?
- 使用提升 asio 时出现"resolve: Host not found (authoritative)"异常
- 为什么 VScode 在 .h 文件中显示"'iostream' file not found"?
- 为什么我在" 'X' identifier not found' "上收到错误
- WinDBG适用于从Visual Studio 2015保存的转储,但不适用于任务管理器。显示异常代码"not found"
- "Entry Point Not Found" Azure 中的错误 LightGBM R 包
- TBB_tbb_LIBRARY_DEBUG-NOT FOUND
- 在 Ubuntu 16.04 下运行协程示例会得到"'experimental/coroutine' file not found"
- 在 mongodb c++ 驱动程序中使用声明"not found"
- 如何修复"/bin/sh: bc: command not found"
- CMake,QT Quick & Visual Studio:"qrc:/main.qml:-1 File not found"
- opencv aruco.h not found windows 10 visual studio
- Qt Cmake 错误编译"GuiSupportQt not found"
- 如何在C++的程序中显示Windows的"DLL not found"错误?
- 如何修复张量流中的"Non-OK-status: Not found: Op type not registered 'NoOp' in binary running"
- 如何在Xcode中修复'sh: brew: command not found'?
- OpenCV: reconstruct() not found