美文网首页
在CMake工程中使用NDK独立工具链 (一)

在CMake工程中使用NDK独立工具链 (一)

作者: RonZheng2010 | 来源:发表于2019-04-12 11:44 被阅读0次

    这里的做法只针对android-ndk-r19之前的版本。从android-ndk-r19开始,就不必再调用make_standalone_toolchain.py创建工具链了。

    1. 下载 NDK

    从Android官网NDK归档找到需要的NDK版本,并下载解压:

    $ wget https://dl.google.com/android/repository/android-ndk-r17c-linux-x86_64.zip
    $ unzip android-ndk-r17c-linux-x86_64.zip
    

    2. 创建独立工具链

    make_standalone_toolchain.py 脚本从NDK创建自定义工具链。

    • --arch指定处理器架构,
    • --api是目标 Android API 级别。这个选项决定Sysroot, Sysroot是包含目标系统头文件及库的目录。
      • 与Android API 级别相关的库位于$NDK/platfroms下,
      • 其他库及头文件位于$NDK/sysroot下
    • --stl 指定使用哪一个标准库。自 r18 起,所有独立工具链都使用 Clang 和 libc++。
    $ ./build/tools/make_standalone_toolchain.py -h
    optional arguments:
      --arch {arm,arm64,x86,x86_64}
      --api API                     Target the given API version (example: "--api 24").
      --stl {gnustl,libc++,stlport} C++ STL to use.
      --install-dir INSTALL_DIR     Install toolchain to the given directory instead of packaging.
    

    如下命令创建的工具链为ARM 64位,Android API 26,安装目录为ndk-toolchain。

    $./build/tools/make_standalone_toolchain.py \
      --arch arm64 \
      --api 28 \
      --install-dir=ndk-toolchain
    

    ndk_toolchain主要包括如下目录:

    • bin 交叉编译工具,如aarch64-linux-android-clang, aarch64-linux-android-clang++等
    • sysroot 系统头文件及系统库
    • include, lib, lib64 C++标准库等

    3. CMake设置

    如果使用CMake构建工程,需要配置相应的CMAKE_TOOLCHAIN_FILE,如下是针对如上工具链的例子。

    # toolchain file example
    set (CMAKE_SYSTEM_NAME  Android)
    set (CMAKE_SYSTEM_VERSION 28)
    set (CMAKE_ANDROID_ARCH_ABI arm64-v8a)
    
    set (CMAKE_ANDROID_STANDALONE_TOOLCHAIN ~/ndk_toolchain)
    

    相关链接

    CMake 常用法
    用CMake构建中等规模的工程
    在CMake工程中使用NDK独立工具链 (一)
    在CMake工程中使用NDK独立工具链 (二)

    参考资料

    NDK 归档
    https://developer.android.google.cn/ndk/downloads/older_releases.html

    NDK - 指南 - 独立工具链
    https://developer.android.google.cn/ndk/guides/standalone_toolchain

    Cross Compiling for Android with a Standalone Toolchain
    https://cmake.org/cmake/help/v3.12/manual/cmake-toolchains.7.html#id21

    相关文章

      网友评论

          本文标题:在CMake工程中使用NDK独立工具链 (一)

          本文链接:https://www.haomeiwen.com/subject/aecniqtx.html