背景:
- 在Ubuntu 16.04开发C/C++程序,编译生成适配MTK平台的android手机
- 版本:Android Q(API版本29)
- API Level:https://source.android.com/setup/start/build-numbers?hl=zh-cn
NDK下载与配置:
- 下载地址:https://developer.android.com/ndk/downloads(最新 LTS 版本 (r21d) 2020-12-21)
- 解压:如 ~/sdk-tools/android-ndk-r21d-linux-x86_64
- 配置环境变量:
gedit ~/.bashrc
#添加如下信息
export ANDROID_NDK="/home/yourname/sdk-tools/android-ndk-r21d"
export PATH="$PATH:$ANDROID_NDK"
交叉编译前置配置:
若下载的ndk版本大于r19,可直接使用默认安装的工具链编译即可,若小于r19版本,则需要进行创建工具链的步骤
补充(版本小于r19,创建工具链的方法):
$NDK/build/tools/make_standalone_toolchain.py \
--arch arm --api 21 --install-dir /tmp/my-android-toolchain
解释:在/tmp目录下创建一个名为my-android-toolchain的文件夹,用以存放工具链,$NDK为NDK的安装路径
官方文档:
- https://developer.android.com/ndk/guides/other_build_systems
- https://developer.android.com/ndk/guides/standalone_toolchain
编译方法(新版,大于r19):
$ $NDK/toolchains/llvm/prebuilt/$HOST_TAG/armv7a-linux-androideabi21-clang \
foo.cpp
生成的文件可以在手机上正常运行
若想测试编译PC平台的可执行文件,可以执行以下命令
$ $NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/clang ../helloworld.c -o helloworld
参考资料: