【嵌入式Linux】源码菜单配置 | 编译 | 菜单配置的实现 | 源码编译的实现

文章详细介绍了Linux内核源码的配置过程,包括通过makemenuconfig进行图形化配置,从零开始配置,保存配置的不同方法。此外,还阐述了编译步骤,如make编译,模块编译和安装,以及内核配置的实现机制,如Kconfig文件和Makefile的作用。最后提到了如何添加新的驱动及其编译方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

源码配置编译

源码配置编译,要把中间各个环节都理清楚

厂商把自己增加的东西专门放了个文件独立,方便开发者发现变化

1.菜单配置

移植的第一步,就是选配,通过make menuconfig图形化界面选配

//载入配置
$ make ARCH=arm64 tegra_defconfig  //导入官方配置
          //会从arch/arm64/configs下 查找tegra_defconfig,导入到当前目录,重命名为.config)
$ make menuconfig //在官方配置基础上进行配置
	
	
//从零配置
$ mv  .config .config.ago //如有,则改名 -> 清除当前配置(.config)
$ make  menuconfig ARCH=arm64 /*生成最初始配置界面(如不指定ARCH,默认的是x86的)
    当前目录有.config则导入,如无则用默认x86配置生成.config
   */

//保存配置
$ make savedefconfig //生成defconfig  (相比make  menuconfig 里的Save保存的配置,这是最简的)
$ cp defconfig arch/arm64/configs/my_defconfig //发布配置(原厂发布配置到内核就是该方式)
1.1载入配置
//载入配置
$ make ARCH=arm64 tegra_defconfig  //导入官方配置
          //会从arch/arm64/configs下 查找tegra_defconfig,导入到当前目录,重命名为.config)
$ make menuconfig //在官方配置基础上进行配置
1.2从零配置
//从零配置
$ mv  .config .config.ago //如有,则改名 -> 清除当前配置(.config)
$ make  menuconfig ARCH=arm64 /*生成最初始配置界面(如不指定ARCH,默认的是x86的)
    当前目录有.config则导入,如无则用默认x86配置生成.config
   */

ARM64的全新的配置

image-20220911224510091

General setup->Cross-compiler tool prefix 交叉编译工具(可以这里指定,也可以Makefile中改)

Enable loadable module support 模块的支持ko文件

Enable the block layer 块设备支持

Platform selection 平台选择,虽然架构一样,但是不同厂商的芯片也各不同

Bus support 总线支持,例如PCIe等

Kernel Features 内核特性

Boot options 启动选项,可以默认bootargs

Power management options 电源管理

Networking support 网络

Device Drivers 驱动

1.3保存配置
//第一种,make menuconfig生成的.config放到对应目录,比较多无关信息
cd ~/kernel-4.9
cp .config arch/arm64/configs/yhai_defconfig
//第二种保存配置
$ make savedefconfig //生成defconfig  (相比make  menuconfig 里的Save保存的配置,这是最简的)
$ cp defconfig arch/arm64/configs/yhai_defconfig //发布配置(原厂发布配置到内核就是该方式)

2.编译

$ make  /*编译所有
 常需指定 交叉编译工具链 CROSS_COMPILE(如无默认采用 gcc)
方式一: make  CROSS_COMPILE=aarch64-linux-gnu-   直接指定
方式二: export CROSS_COMPILE=aarch64-linux-gnu-  导出环境变量
 */
$ make  all
$ make Image //只编译内核
$ make modules //只编译模块
$ make dtbs //只编译设备树

$ make install /*安装内核  就是把编译出来的二进制文件,库,配置文件等等放到相应目录下
 常需指定 安装路径 INSTALL_PATH
方式一: make install INSTALL_PATH=/tftpboot   直接指定
方式二: export INSTALL_PATH=/tftpboot  导出环境变量
 */
$ make modules_install /*安装模块
  常需指定 安装路径 INSTALL_MOD_PATH
方式一:make modules_install INSTALL_MOD_PATH=~/Linux_for_Tegra/rootfs   直接指定
方式二:export INSTALL_MOD_PATH=~/Linux_for_Tegra/rootfs  导出环境变量
 */

3.菜单配置的实现

为什么make menuconfig后能生成图形界面

image-20220912134924752

3.1顶层配置

Kconfig 总菜单

source “arch/$SRCARCH/Kconfig” 子菜单

menu “Bus support” 显示的字

menuconfig 可以选的菜单

config 可以选的参数

default 默认选择 显示-*-

bool 只有YN 显示[*]

tristate 三态YNM 显示<>

{
   //Kconfig
//对应菜单信息 .config - Linux/arm64 4.9.253 Kernel Configuration
mainmenu "Linux/$ARCH $KERNELVERSION Kernel Configuration"

config SRCARCH
    string
    option env="SRCARCH"

source "arch/$SRCARCH/Kconfig" //导入子Kconfig
	
}

{
   //arch/arm64/Kconfig
source "init/Kconfig"  //gf  跳转到子配置【这个对应General setup --->】
    
source "kernel/Kconfig.freezer"                                       
      
source "arch/arm64/Kconfig.platforms"     //3.2平台选择                            
      
menu "Bus support"                                                    
      
config PCI                                                            
    bool "PCI support"
    help                                                              
      This feature enables support for 
参考资源链接:[正点原子Buildroot中文用户手册V1.0:嵌入式Linux开发宝典](https://wenku.csdn.net/doc/5csr5r1j0q?utm_source=wenku_answer2doc_content) 当你着手于嵌入式Linux开发时,掌握Buildroot配置编译交叉编译工具链的技能是基础。为了帮助你更好地完成这一过程,推荐参考这份资料:《正点原子Buildroot中文用户手册V1.0:嵌入式Linux开发宝典》。通过使用Buildroot,你可以轻松构建一个适合特定硬件平台的交叉编译环境。 首先,需要下载并安装Buildroot。确保你的系统环境已经安装了必要依赖,如gcc、make、bash等。接下来,通过以下步骤配置编译交叉编译工具链: 1. 解压Buildroot源码包到指定目录。 2. 进入Buildroot目录,执行命令 `make menuconfig` 进行图形化配置。 3. 在菜单中选择目标架构(如ARM)和你想要的编译工具链版本。 4. 配置完成后,保存并退出。 5. 运行命令 `make` 开始构建过程,Buildroot将自动下载源码包,编译出交叉编译工具链及其他组件。 6. 构建完成后,交叉编译工具链将位于 Buildroot/output/host/bin 目录下。 在这个过程中,Buildroot会处理软件包的依赖关系,确保编译所需的库和工具全部就绪。工具链编译完成之后,你可以使用它编译出适用于目标嵌入式设备的应用程序和库。 通过《正点原子Buildroot中文用户手册V1.0:嵌入式Linux开发宝典》的学习,你不仅能够掌握交叉编译工具链的配置编译过程,还能深入理解Buildroot的高级特性。手册中的实战案例和详细的步骤指导,能让你在面对嵌入式开发中的各种问题时更加得心应手。希望这份资源能够为你的嵌入式Linux开发之路提供帮助,之后建议继续深入学习更多关于Buildroot的高级配置和优化技巧。 参考资源链接:[正点原子Buildroot中文用户手册V1.0:嵌入式Linux开发宝典](https://wenku.csdn.net/doc/5csr5r1j0q?utm_source=wenku_answer2doc_content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值