Android NDK-arm-linux-androideabi-g++;:找不到 我试图在一个刚刚安装的Ubuntu中为Android目标构建C++ PoCO库。

Android NDK-arm-linux-androideabi-g++;:找不到 我试图在一个刚刚安装的Ubuntu中为Android目标构建C++ PoCO库。,android,c++,linux,android-ndk,cross-compiling,Android,C++,Linux,Android Ndk,Cross Compiling,我已经在/home/user/dev/Android/Android-NDK-r9-x86中安装了Android-NDK,并使用以下方法在环境变量中添加了NDK的路径: export-ANDROID\u NDK\u ROOT=/home/user/dev/ANDROID/ANDROID-NDK-r9-x86 要构建库,我首先移动到POCO库的根目录,并使用以下命令对其进行配置: ./configure --omit=NetSSL_OpenSSL,Crypto,Data/ODBC,Data/MyS

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

export-ANDROID\u NDK\u ROOT=/home/user/dev/ANDROID/ANDROID-NDK-r9-x86

要构建库,我首先移动到POCO库的根目录,并使用以下命令对其进行配置:

./configure --omit=NetSSL_OpenSSL,Crypto,Data/ODBC,Data/MySQL --static --config=Android
所以它编译static.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 AndroidABI
交叉编译器,而不是其他一些更模糊的、特定于供应商/平台的交叉编译器/工具链,例如
armv7a marvell linux android
,这正是marvell使用的,或者
arm-linux-android
,这正是Clang所使用的。有关Clang的更多信息。我可能是错的,这个叮当声实际上产生了一个现成的
armlinuxandroideabi
工具链,但我不确定。我知道你可以很容易地使用它,我只是不确定它是否可以“开箱即用”,这正是你所寻找的。“剩下的工作”只是一些路径导出,但仍然是。我们的目标是找到最懒惰的解决方案

独立的工具链对于您的任务来说应该足够了,所以尽量多地使用它,而不是使用任何其他交叉编译解决方案

但是,如果您有冒险精神,您可以使用
crosstool ng
工具创建自己的交叉编译器(或整个工具链!)。然而,尽量坚持利纳罗libc分行;个人经验告诉我,一个人的工作方式最好,造成的问题/时间浪费最少

此外,请确保您下载了适合您的体系结构(arch)和操作系统的版本,32位与64位在这里同样重要。经过长时间的讨论,我们意识到这是一个“32位vs 64位”的问题。
阅读更多信息。

您没有安装ARM(
ARM linux AndroidABI
)工具链。@Shark谢谢您的回答。工具链不是与NDK一起提供的吗?我对工具链很不熟悉。你能给我指一下正确的方向吗?事实上,我能。让我给你写下来……你实际上需要安装独立的工具链和NDK,然后你就可以开始了。NDK实际上只包含NDK源。NDK将不会帮助您构建它。感谢您花时间回答。我将尝试设置此工具链。感谢您花时间接受答案,如果它对您有帮助的话。因此,我所做的是(根据您给我的链接中描述的过程):1)安装g++,安装cmake(不确定是否需要),安装NDK r9,2)定义env var
ANDROID\u NDK\u ROOT
以指向NDK的根目录,3)导出APP\u ABI=arm-linux-androideabi-4.8,4)SYSROOT=$ANDROID\u ROOT/platforms/ANDROID-18/arch arm,5)使用
$ANDROID\u NDK\u ROOT/build/tools/make-standalone-toolchain.sh--arch=arm--platform=ANDROID-18--install dir=/tmp/my-ANDROID toolchain--toolchain=arm-linux-androideabi-4.8
创建了一个工具链!直接从终端调用时找不到它。它不像我预期的那样在Windows上运行。无论如何,非常感谢你的帮助。我会设法找出它为什么不能执行。