当前位置: 首页 > article >正文

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

文章目录

    • Tip1:交叉编译选项
    • Tip2:源码与目标文件分离
    • Tip3:获得编译命令及选项
    • 内核编译脚本

Tip1:交叉编译选项


编译Linux,通常只需要运行make menuconfig配置要编译的模块,然后运行make。 Linux默认是做本地编译,也就是编译位本机使用的内核。

在嵌入式开发中,经常需要交叉编译,要做交叉编译的话,需要在make命令后加上宏定义,如交叉编译为arm目标:

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-

ARCH=arm: 表示目标CPU为ARM架构

CROSS_COMPILE=arm-linux-

表示编译过程使用的交叉编译链为arm-linux

当然也可以直接修改Makefile中的ARCHCROSS_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/sh

export ARCH=arm
export PATH=~/toolchain/arm_glibc/host/bin:$PATH
export CROSS_COMPILE=arm-linux-gnu-

#make O=../bd defconfig
make O=../bd menuconfig -j32
make 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反汇编对大多数人来说可能用不上,一般在内核移植、启动分析时比较有用,但由于工作需要,我通常都会把反汇编加上。


http://www.kler.cn/a/6573.html

相关文章:

  • go面试问题
  • Leaflet的zoom层级-天地图层级之间的关系
  • Win10将WindowsTerminal设置默认终端并添加到右键(无法使用微软商店)
  • 堆【Lecode_HOT100】
  • 初识面向对象晨考day09
  • Spring Boot--06--整合Swagger
  • 数据结构_第五关:单链表OJ题练习
  • 反射学习总结
  • ABC296E Transition Game
  • c++实现sqlite的增删改查
  • 如何下载ChatGPT-ChatGPT如何写作
  • 中华好诗词(六)
  • ChatGPT 从注册到自建应用
  • Linux【环境变量】
  • Apple Pencil性价比高吗?第三方平替电容笔排名
  • 你好快哦, HikariCP
  • 获取QTableWidget中某个单元格的坐标
  • 互联网摸鱼日报(2023-04-06)
  • 日益强大的人工智能OpenAI ChatGPT GPT-4真的会让程序员失业吗?
  • “卓见杯”郑州轻工业大学第十五届程序设计大赛暨河南省高校邀请赛题解
  • 「读书感悟系列」失明症漫记
  • 蓝桥杯赛前冲刺-双指针和图论专题(包含历年蓝桥杯真题和详细注释代码)
  • 【GPT4】微软 GPT-4 测试报告(9)结论与展望
  • 苹果手机配什么无线蓝牙耳机好?适配苹果手机的蓝牙耳机推荐
  • 网络系统集成实验(三)| 系统集成虚拟局域网(VLAN)配置
  • abaqus子程序vumat安装使用