DK 提供 make-standalone-toolchain.sh
shell 脚本以允许您从命令行执行定制的工具链安装。脚本位于 $NDK/build/tools/
目录中,其中 $NDK
是 NDK 的安装根目录。
此命令创建一个名为 /tmp/my-android-toolchain/ 的目录,包含一个 android-21/arch-arm sysroot 的副本,以及适用于 32 位 ARM 架构的工具链二进制文件的副本。
比如执行
make-standalone-toolchain.sh --platform=android-28 --toolchain=aarch64-linux-android-4.9 --install-dir=d:\tmp
d:\tmp目录如下:
如果不加 --install-dir 选项,则会创建 /tmp/ndk/my-android-toolchain.tar.bz2。将此文件解压到/tmp/my-android-toolchain
然后做如下配置就可以使用交叉编译工具了:
$ export PATH=/tmp/my-android-toolchain/bin:$PATH
$ export CC=arm-linux-androideabi-gcc
$ export CXX=arm-linux-androideabi-g++
$ export CXXFLAGS="-lstdc++"
执行完以上设置环境变量的命令之后,就可以直接编译了(例如,执行 ./configure 然后 make 得到的就是 arm 程序了)。不用再设定 sysroot, CC 了。而且,可以使用 STL,异常,RTTI。
make-standalone-toolchain.sh的命令行选项:
--toolchain=
--use-llvm No-op. Clang is always available.
--stl=
--arch=
--abis= No-op. Derived from --arch or --toolchain.
--ndk-dir=
--package-dir=
--install-dir=
--dryrun Unsupported.
--platform=
--force Remove existing install directory.如果已在目录下生成过,需要重新生成,需要加这个选项。
make-standalone-toolchain.py的命令行选项:
--arch 'arm', 'arm64', 'x86', 'x86_64'
--api Target the given API version (example: "--api 24").
--stl Ignored. Retained for compatibility until NDK r19.
--force Remove existing installation directory if it exists.
-v --verbose Increase output verbosity.
--package-dir Build a tarball and install it to the given directory. If neither --package-dir nor --install-dir is specified, a tarball will be created and installed to the current directory.
--install-dir Install toolchain to the given directory instead of packaging.
问题1:
ERROR: Failed to create toolchain
解决办法:
安装python
#$ANDROID_NDK/build/tools/make-standalone-toolchain.sh --platform=android-24 --install-dir=./android-toolchain --ndk-dir=/Users/musictom/Library/Android/sdk/ndk-bundle/ --use-llvm
#$ANDROID_NDK/build/tools/make-standalone-toolchain.sh --platform=android-24 --install-dir=./android-toolchain --ndk-dir=/Users/musictom/Library/Android/sdk/ndk-bundle/ --use-llvm --arch=arm64
#$ANDROID_NDK/build/tools/make-standalone-toolchain.sh --platform=android-24 --install-dir=./android-toolchain --ndk-dir=/Users/musictom/Library/Android/sdk/ndk-bundle/ --use-llvm --arch=mips64
#$ANDROID_NDK/build/tools/make-standalone-toolchain.sh --platform=android-24 --install-dir=./android-toolchain --ndk-dir=/Users/musictom/Library/Android/sdk/ndk-bundle/ --use-llvm --arch=mips
#$ANDROID_NDK/build/tools/make-standalone-toolchain.sh --platform=android-24 --install-dir=./android-toolchain --ndk-dir=/Users/musictom/Library/Android/sdk/ndk-bundle/ --use-llvm --arch=x86
#$ANDROID_NDK/build/tools/make-standalone-toolchain.sh --platform=android-24 --install-dir=./android-toolchain --ndk-dir=/Users/musictom/Library/Android/sdk/ndk-bundle/ --use-llvm --arch=x86_64