# 编译工具的选择 使用合适的编译工具可以减少很多的麻烦 如果内核版本≤4.9,请使用gcc编译。(用clang也不是不行,只不过是不推荐,可以试试[这个](https://github.com/wloot/tc-build/releases/tag/v2020.0213)) 反之请使用clang编译。 注:这篇内容是给x86_64架构准备的,其他架构请参考准备工作篇。 ### gcc的选择 - 使用软件源里的gcc 使用包管理器搜索并安装gcc即可。 Debian/Ubuntu ```bash sudo apt install gcc -y ``` Arch Linux ```bash sudo pacman -S gcc ``` Fedora ```bash sudo dnf install gcc ``` OpenSUSE ```bash sudo zypper install gcc ``` - 使用linaro gcc [下载链接](https://releases.linaro.org/components/toolchain/binaries/) - 使用aosp gcc [下载链接](https://android.googlesource.com/platform/prebuilts/gcc) 一般情况下使用gcc-4.9即可。 例如(以安卓7为例) ```bash 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 [下载链接](https://github.com/Neutron-Toolchains/clang-build-catalogue/releases) 当然也可以自行构建。 - zyc clang [下载链接](https://github.com/ZyCromerZ/Clang/releases) - tc-build [下载链接](https://github.com/wloot/tc-build/releases/) 当然也可以自行构建 - proton clang [下载链接](https://github.com/kdrag0n/proton-clang/releases) - aosp clang [下载链接](https://android.googlesource.com/platform/prebuilts/clang) 一般地,只需要使用本机配置编译的clang版本即可。 ```bash 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。 可以[从此](https://developer.android.google.cn/ndk/downloads?hl=zh-cn)下载。 # Config 例如 ```bash # # 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的配置: ```bash # # 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)