C++学习(三四七)make-standalone-toolchain使用

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目录如下:

C++学习(三四七)make-standalone-toolchain使用_第1张图片

 如果不加 --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=   Specify toolchain name

--use-llvm   No-op. Clang is always available.

--stl=  Specify C++ STL

--arch=  Specify target architecture

--abis=  No-op. Derived from --arch or --toolchain.

--ndk-dir=  Unsupported.

--package-dir=  Place package file in 指定该选项会生成压缩文件

--install-dir=  Don't create package, install files to instead.

--dryrun  Unsupported.

--platform=  Specify target Android platform/API level. 比如android-14

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

你可能感兴趣的:(C++学习,c++,android,sqlite)