golang 1.4 编译android toolchain的方法

其他平台及架构的toolchain编译我在之前的文章已经简单总结过,其实android的toolchain和之前的toolchain生成非常类似,需要注意以下2点:

1、要通过ndk生成standalone的"ndk-gcc"

2、使用CC_FOR_TARGET=<ndk-gcc>/bin/arm-linux-androideabi-gcc

那么let's go

1、下载NDK,https://developer.android.com/tools/sdk/ndk/index.html

2、通过NDK自带的脚本生成standalone toolchain

<ndk-root>/build/tools/make-standalone-toolchain.sh --platform=android-9 \
    --install-dir=<ndk-gcc> --arch=arm

3、使用standalone toolchain编译golang

进入到<GOROOT>/src

CC_FOR_TARGET=<ndk-gcc>/bin/arm-linux-androideabi-gcc GOOS=android \
    GOARCH=arm GOARM=7 CGO_ENABLED=1 ./make.bash

运行完毕没有错误的话即可生成android的toolchain了

4、使用生成的android toolchain尝试编译一个.so

CC=<ndk-gcc>/bin/arm-linux-androideabi-gcc GOOS=android GOARCH=arm \
    GOARM=7 CGO_ENABLED=1 go build -ldflags="-shared"

使用file命令 file <outputfile>,检查一下生成的文件,格式是否正确

ELF 32-bit LSB  shared object, ARM, EABI5 version 1 (SYSV), dynamically
linked (uses shared libs), not stripped

发表评论

电子邮件地址不会被公开。 必填项已用*标注