编译内核
进入到内核源码目录 执行
export ARCH=arm64
export PATH=clang/bin:${PATH}
export BUILD_CROSS_COMPILE=aarch64-linux-android-4.9/bin/aarch64-linux-android-
export CLANG_PATH=$HOME/clang/bin
export CROSS_COMPILE_ARM32=arm-linux-androideabi-4.9/bin/arm-linux-androideabi-
export CLANG_TRIPLE=aarch64-linux-gnu-
来决定编译内核的架构和编译器的路径。
一些参数的详细解释:
CC: 指定使用的编译器,因为 make 默认使用 gcc,因此实际上只有你在使用 clang 进行编译的时候才会使用该参数
CROSS_COMPILE: 主要的交叉编译链工具,如果你在使用谷歌的 gcc 4.9,请指定参数为 aarch64-linux-android-,32 位同理
CLANG_TRIPLE: 只在使用 clang 进行编译的时候才需要使用,用于指定当 clang 不生效时候使用的工具链,~~可以不用指定~~
CROSS_COMPILE_ARM32: 只在编译 32 位内核或者带 vdso 补丁的内核时需要指定该参数
ARCH: 编译内核的架构,默认为本机架构
~~使用gcc编译的话请忽略export PATH=clang/bin:${PATH},CLANG_TRIPLE=aarch64-linux-gnu和CLANG_PATH=$HOME/clang/bin-~~
注:你需要自己修改编译器的位置
然后输入
make defconfig
将defconfig换成arch/arm64/configs
里的本机编译文件名称。
注:某些源码的配置文件可能放在arch/arm64/configs/vendor
文件夹。
然后会输出类似以下的结果
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
SHIPPED scripts/kconfig/zconf.tab.c
SHIPPED scripts/kconfig/zconf.lex.c
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/conf
#
# configuration written to .config
#
可能输出的结果有所不同。
然后执行
make -j8 CC=clang
意思是使用8线程编译,编译器为clang/bin/clang
注:使用gcc编译的话请忽略掉CC=clang
注:某些内核需要添加其他参数,例如LD=ld.lld
编译后的文件在arch/arm64/boot目录下,一般为Image,Image.gz-dtb或Image.gz