安卓内核编译教程
寻找合适的clang
在内核目录找到build.config.common
1 2 3 4 5 6 7 8 9 10 11 12
| BRANCH=android-4.19-stable KMI_GENERATION=0
LLVM=1 DEPMOD=depmod CLANG_PREBUILT_BIN=prebuilts-master/clang/host/linux-x86/clang-r416183b/bin BUILDTOOLS_PREBUILT_BIN=build/build-tools/path/linux-x86
EXTRA_CMDS='' STOP_SHIP_TRACEPRINTK=1 IN_KERNEL_MODULES=1 DO_NOT_STRIP_MODULES=1
|
如此我们找到了,它需要的是clang-r416183b,我们需要去谷歌上找到对应的.
1
| https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86/+archive/android12-release/clang-r416183b.tar.gz
|
但clang本身并不自带交叉编译器,我们需要再下一个.
1
| https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/+/refs/heads/android12-release
|
安装依赖
1 2 3 4 5
| bc bison build-essential ccache curl flex g++-multilib gcc-multilib git git-lfs gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev libelf-dev liblz4-tool libncurses5 libncurses5-dev libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev
|
这是需要的依赖,debian系列的为例.你需要使用apt安装他们
基于https://github.com/feichaixiaobai/Android-kernel-make-teach/discussions/1
需要的变量参数
1 2 3 4
| export PATH="/XXXXXX/bin:$PATH" 把clang跟交叉编译器填进去 export ARCH=arm64 export SUBARCH=arm64 export CROSS_COMPILE=aarch64-linux-gnu- 需要根据交叉编译工具链下的bin内相似的文件名修改
|
一般编译这种需要LLVM的则需要编译参数LLVM=1 LLVM_IAS=1
多重配置文件
如果内核的配置文件带有基础配置文件以及多项定制文件则需要一起make如:
1
| vendor/sdm660-perf_defconfig vendor/oppo/sdm660-common.config vendor/oppo/R11s.config
|