您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 海北分类信息网,免费分类信息发布

编译Linux内核一定要知道的几个小Tips

2024/4/21 12:55:13发布53次查看
tip1:交叉编译选项 编译linux,通常只需要运行make menuconfig配置要编译的模块,然后运行make。linux默认是做本地编译,也就是编译位本机使用的内核。
在嵌入式开发中,经常需要交叉编译,要做交叉编译的话,需要在make命令后加上宏定义,如交叉编译为arm目标:
make arch=arm cross_compile=arm-linux-
arch=arm:表示目标cpu为arm架构
cross_compile=arm-linux-:
表示编译过程使用的交叉编译链为arm-linux
当然也可以直接修改makefile中的arch和cross_compile宏定义,以此实现同样的效果。但是不建议直接修改makefile。
tip2:源码与目标文件分离 linux内核编译过程会产生很多的文件,包括目标文件、临时文件等等,默认情况下,编译生成的文件会存放在内核源码目录。
当你使用git status显示自己对内核代码的修改时也会把这些临时文件显示出来,而且提交还必须一个文件一个文件地指定,相当麻烦。
因此我们可以在父目录创建一个存放编译文件的目录,如build-kernel,然后再make 命令后面加上宏定义:
make o=../build-kernel
这样在编译linux内核时,所有编译产生的文件,都会放在build-kernel目录,如果build-kernel目录不存在,也会自动创建。这样可以实现linux内核源码与编译产生的文件分离。
tip3:获得编译命令及选项 编译linux时,默认不会显示编译的命令,如果你要获得编译命令及其选项,可以在make命令后面加上宏定义:
make v=1
如果希望编译系统告诉你为何某个目标文件需要重新编译,则:
make v=2
内核编译脚本 最后分享我常用的内核编译脚本mk.sh,给大家参考:
#!/bin/shexport arch=armexport path=~/toolchain/arm_glibc/host/bin:$pathexport cross_compile=arm-linux-gnu-#make o=../bd defconfigmake o=../bd menuconfig -j32make o=../bd dtbs#反汇编$(cross_compile)objdump -d ../bd/vmlinux > ../image/vmlinux_dump.txt#生成uimage../ubd/tools/mkimage -a arm -t kernel -c none -o linux -a 0x80200000 -e 0x80200000 -n "debug kernel" -d ../bd/image ../image/uimage
其中,make o=../bd defconfig只有在第一次编译内核的才使用,第一次编译过后,将这句注释,后面都通过make menuconfig修改内核配置。
objdump反汇编对大多数人来说可能用不上,一般在内核移植、启动分析时比较有用,但由于工作需要,我通常都会把反汇编加上。
以上就是编译linux内核一定要知道的几个小tips的详细内容。
海北分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录