编译工具的选择
使用合适的编译工具可以减少很多的麻烦 如果内核版本≤4.9,请使用gcc编译。(用clang也不是不行,只不过是不推荐,可以试试这个) 反之请使用clang编译。
注:这篇内容是给x86_64架构准备的,其他架构请参考准备工作篇。
gcc的选择
使用软件源里的gcc 使用包管理器搜索并安装gcc即可。
Debian/Ubuntu
sudo apt install gcc -y
Arch Linux
sudo pacman -S gcc
Fedora
sudo dnf install gcc
OpenSUSE
sudo zypper install gcc
使用linaro gcc
使用aosp gcc
一般情况下使用gcc-4.9即可。
例如(以安卓7为例)
git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9 -b nougat-mr2.3-release
git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9 -b nougat-mr2.3-release
clang的选择
软件源里的clang
安装方法同软件源里的gcc安装方法
Neutron-Clang
当然也可以自行构建。
zyc clang
tc-build
当然也可以自行构建
proton clang
aosp clang
一般地,只需要使用本机配置编译的clang版本即可。
wget https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86/+archive/refs/heads/android12-release/clang-r383902.tar.gz
Android NDK
Android NDK 是一个工具集。其中NDK(Native Development Kit),是 Android的一个工具开发包。
Android NDK集成了编译内核所需的工具,例如llvm。
可以从此下载。
Config
例如
#
# Automatically generated file; DO NOT EDIT.
# Linux/arm64 4.19.191 Kernel Configuration
#
#
# Compiler: Android (6443078 based on r383902) clang version 11.0.1 (https://android.googlesource.com/toolchain/llvm-project b397f81060ce6d701042b782172ed13bee898b79)
#
这是reno6上coloros13的配置,明确给出了aosp clang的版本为r383902
当然有些配置会说明不会使用aosp clang进行编译,例如小米10pro,miui14.0.2的配置:
#
# Automatically generated file; DO NOT EDIT.
# Linux/arm64 4.19.157 Kernel Configuration
#
#
# Compiler: clang version 10.0.7 for Android NDK
#
那么只需要找到版本号与之相同的clang,或者使用与之相应即可。例如这里就提到了Android NDK.
如果手机没有root,那么可以根据安卓版本参考:
android10 (r328903,r339409b,r344140b,r346389,r349610,r383893)
android11 (r353983c,r353631c,r370808,r377782,r383902)
android12 (r383902,r416183b)
android13 (r450784d)
other (r458507,r450784e)