编译工具的选择

使用合适的编译工具可以减少很多的麻烦 如果内核版本≤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)