系统相关
首页 > 系统相关> > Android NDK-arm-linux-androideabi-g:找不到

Android NDK-arm-linux-androideabi-g:找不到

作者:互联网

我正在尝试在刚为此安装的新Ubuntu中为Android目标构建C POCO库.

我已经在/ home / user / dev / Android / android-ndk-r9-x86中安装了Android NDK,并使用以下命令在环境变量中添加了NDK的路径:

导出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命令/可执行文件/二进制文件.

幸运的是,我们可以通过安装Standalone toolchain来解决该问题-实际上,它确实具有您所缺少的东西,这是一种通用的arm-linux-androideabi交叉编译器,而不是其他一些晦涩的,特定于供应商/平台的交叉编译器交叉编译器/工具链,例如marvell使用的armv7a-marvell-linux-android或CLang使用的arm-linux-android.有关CLang,look here的更多信息.我可能是错的,并且CLang实际上开箱即用生成了arm-linux-androideabi工具链,但我不确定.我知道您可以轻松使用它,只是不确定是否可以“直接使用”它,这正是您所要的. “剩下的工作”只是一些途径的输出,但仍然如此.我们的目标是在这里提供最懒惰的解决方案.

独立的工具链应足以完成您的任务,因此请尝试在其他任何交叉编译解决方案中尽可能多地使用它.

但是,如果您喜欢冒险-可以使用crosstool-ng工具随意创建自己的交叉编译器(或整个工具链!).但是,请尝试使用Linaro libc分支.亲身经历告诉我,某种方式效果最好,而造成的问题/时间浪费最少.

编辑:

另外,请确保为您的体系结构(架构)和操作系统下载正确的版本,这里也涉及32位和64位.经过长时间的讨论,我们意识到这是一个“ 32位与64位”的问题.
Here’s a link了解更多信息.

标签:android-ndk,cross-compiling,linux,c-4,android
来源: https://codeday.me/bug/20191027/1944108.html