编译Linux内核一定要知道的几个小Tips
Tip1:交叉编译选项
编译Linux,通常只需要运行make menuconfig
配置要编译的模块,然后运行make
。Linux默认是做本地编译,也就是编译位本机使用的内核。
在嵌入式开发中,经常需要交叉编译,要做交叉编译的话,需要在make
命令后加上宏定义,如交叉编译为arm目标:
make ARCH=arm CROSS_COMPILE=arm-linux-登录后复制
CROSS_COMPILE=arm-linux-
:
表示编译过程使用的交叉编译链为arm-linux
当然也可以直接修改Makefile
中的ARCH
和CROSS_COMPILE
宏定义,以此实现同样的效果。但是不建议直接修改Makefile。
Tip2:源码与目标文件分离
Linux内核编译过程会产生很多的文件,包括目标文件、临时文件等等,默认情况下,编译生成的文件会存放在内核源码目录。
当你使用git status
显示自己对内核代码的修改时也会把这些临时文件显示出来,而且提交还必须一个文件一个文件地指定,相当麻烦。
因此我们可以在父目录创建一个存放编译文件的目录,如build-kernel
,然后再make
命令后面加上宏定义:
make O=../build-kernel登录后复制
Tip3:获得编译命令及选项
编译linux时,默认不会显示编译的命令,如果你要获得编译命令及其选项,可以在make命令后面加上宏定义:
make V=1登录后复制
make V=2登录后复制