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

我正在为刚刚安装的新的Ubuntu构build一个Android目标的C ++ POCO库。

我已经在/home/user/dev/Android/android-ndk-r9-x86安装了Android NDK,并在环境variables中添加了NDK的path:

export ANDROID_NDK_ROOT=/home/user/dev/Android/android-ndk-r9-x86

要构build库,我首先移动到POCO库的根目录,并使用以下命令进行configuration:

 ./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 

使似乎无法find用于Android的编译器,我不知道为什么? 我错过了什么? 我在“安装”NDK时忘记了什么吗?

谢谢。

你得到的错误是由于缺少工具链调用引起的,相反,无法找到arm-linux-androideabi-g++命令/ executable / binary。

幸运的是,我们可以通过安装独立工具链来解决这个问题 – 一个实际上有你缺少的东西,一个通用的arm-linux-androideabi交叉编译器,而不是其他的,一个更晦涩的供应商/平台 -特定的armv7a-marvell-linux-android /工具链,比如armv7a-marvell-linux-android ,或者是CLang使用的arm-linux-android 。 有关CLANG的更多信息, 请看这里 。 我可能是错误的,而且CLang实际上产生了一个arm-linux-androideabi工具链,但是我不确定。 我知道你可以很容易地使用它,我只是不确定是否可以使用“开箱即用”,这是你正在寻找的东西。 “其余的工作”只是几条路径出口 – 但依然如此。 我们正在瞄准这里最懒的解决方案。

独立的工具链对于您的任务来说应该足够了,所以请尽可能地使用它来交叉编译解决方案。

但是,如果您感觉冒险 – 您可以使用crosstool-ng工具自由制作自己的交叉编译器(或整个工具链!)。 但是,尽量坚持Linaro libc分支; 个人经验告诉我,某种程度上工作得最好,造成浪费最少的问题/时间。

编辑:

此外,请确保您下载适合您的体系结构(操作系统)和操作系统的正确的一个,32位和64位也很重要。 经过漫长的讨论,我们意识到这是一个“32位与64位”的问题。 这里有一个链接来阅读更多关于它。