NDK交叉编译之自定义工具链

本机OS: Ubuntu 14.04 x64

首先上官方文档
https://developer.android.com/ndk/guides/standalone_toolchain.html
可以自定义工具链进行交叉编译

1.对不同的指令集APP_ABI设置

Architecture Toolchain name
ARM-based arm-linux-androideabi-<gcc-version>
x86-based x86-<gcc-version>
MIPS-based mipsel-linux-android-<gcc-version>
ARM64-based aarch64-linux-android-<gcc-version>
X86-64-based x86_64-<gcc-version>
MIPS64-based mips64el-linux-android--<gcc-version>

2.工具链和相应的值,使用--arch

Toolchain Value
mips64 compiler --arch=mips64
mips GCC 4.8 compiler --arch=mips
x86 GCC 4.8 compiler --arch=x86
x86_64 GCC 4.8 compiler --arch=x86_64
mips GCC 4.8 compiler --arch=mips

3.工具链和相应的值,使用--toolchain

Toolchain Value
arm --toolchain=arm-linux-androideabi-4.8
arm --toolchain=arm-linux-androideabi-4.9
arm --toolchain=arm-linux-android-clang3.5
arm --toolchain=arm-linux-android-clang3.6
x86 --toolchain=x86-linux-android-4.8
x86 --toolchain=x86-linux-android-4.9
x86 --toolchain=x86-linux-android-clang3.5
x86 --toolchain=x86-linux-android-clang3.6
mips --toolchain=mips-linux-android-4.8
mips --toolchain=mips-linux-android-4.9
mips --toolchain=mips-linux-android-clang3.5
mips --toolchain=mips-linux-android-clang3.6
arm64 --toolchain=aarch64-linux-android-4.9
arm64 --toolchain=aarch64-linux-android-clang3.5
arm64 --toolchain=aarch64-linux-android-clang3.6
x86_64 --toolchain=x86_64-linux-android-4.9
x86_64 --toolchain=x86_64-linux-android-clang3.5
x86_64 --toolchain=x86_64-linux-android-clang3.6
mips64 --toolchain=mips64el-linux-android-4.9
mips64 --toolchain=mips64el-linux-android-clang3.5
mips64 --toolchain=mips64el-linux-android-clang3.6

主机工具链和相应的值,使用-system

Host toolchain Value
64-bit Linux -system=linux-x86_64
64-bit MacOSX -system=darwin-x86_64
64-bit Windows -system=windows-x86_64

自定义

#NDK_HOME为安装路径
export NDK_HOME=/workspace/android-ndk-r10e
$NDK_HOME/build/tools/make-standalone-toolchain.sh --arch=arm --platform=android-21 --install-dir=$HOME/android-toolchain --toolchain=arm-linux-androideabi-4.9

上面演示的仅仅是单一的arm工具链
可以根据自己的需要独立配置
不过相应的arch和对应的toolchain要对应

可以写个Shell脚本处理make_toolchain.sh
在开头配置好相应的路径,和platform即可


export NDK_HOME=/workspace/android-ndk-r10e


platform=android-21
shmake=$NDK_HOME/build/tools/make-standalone-toolchain.sh

archs=(
    'arm'
    'arm64'
    'x86'
    'x86_64'
    'mips'
    'mips64'
)

toolchains=(
    'arm-linux-androideabi-4.9'
    'aarch64-linux-android-4.9'
    'x86-4.9'
    'x86_64-4.9'
    'mipsel-linux-android-4.9'
    'mips64el-linux-android-4.9'
)

echo $NDK_HOME
num=${#archs[@]}
for ((i=0;i<$num;i++))
do
   sh $shmake --arch=${archs[i]} --platform=$platform --install-dir=$HOME/android-toolchain/${archs[i]} --toolchain=${toolchains[i]}
done

运行

sh make_toolchain.sh

交叉编译的工具链配置完成,方便后续进行交叉编译

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,027评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,786评论 25 709
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,975评论 6 342
  • 在Android NDK开发中,有两个重要的文件:Android.mk和Application.mk,各尽其责,指...
    f9dd77add98e阅读 14,143评论 6 15
  • 这是前几天群里发的一个话题,你看到这张图有什么想法? 男人来自火星,女人来自金星。沟通的方式正确了,关系自然融洽,...
    赵慧姿阅读 324评论 4 2