make menuconfig圖形化配置界面
1. 怎麼進入到make menuconfig圖形化界面?
2. make menuconfig圖形化界面的操作
3. 退出
4. 和make menuconfig有關的文件
5. make menuconfig會讀哪個目錄下的Kconfig文件
6. 為什麼要複製成.config而不是其他文件
7. 我們複製的這個默認的配置選項不符合我們的要求怎麼辦?
8. 怎麼和Makefile文件建立的關係
驅動編譯到內核
make menuconfig圖形化配置界面1. 怎麼進入到make menuconfig圖形化界面?首先進入到內核源碼的路徑下
然後輸入
make menuconfig
即可打開這個界面
搜索功能
配置驅動狀態
把驅動編譯編譯成模塊(用M表示)
把驅動編譯到內核裡面(用*來表示)
不編譯
3. 退出退出分為保存退出和不保存退出
arch/ $ARCH/目錄下的Kconfig
arch/arm/configs
有好多的配置文件,相當於這個飯店的特色菜
6. 為什麼要複製成.config而不是其他文件複製配置文件到源碼根目錄
cp imx_v7_defconfig /work/linux-4.1.15/.config
注意:
複製成.config格式
查看我們複製的.config格式文件
能不能是其他的文件名字?
肯定是不行的,因為內核會默認讀取Linux內核根目錄下的.config作為默認的配置選項,所以不可以改名字
7. 我們複製的這個默認的配置選項不符合我們的要求怎麼辦?我們要就要點菜,菜單是Kconfig,通過make menuconfig來調出來這個菜單了
也就是按照要求從圖形化界面選擇就是了。
配置完成以後會自動更新到.config裡面
8. 怎麼和Makefile文件建立的關係當我們make menuconfig保存退出以後,Linux會將所有的配置選項以宏定義的形式保存在include/generated/下面的autoconf.h裡面
具體怎麼建立關係也不是我們關心的內容。
source "drivers/redled/Kconfig"
config LED_4412
tristate "Led Support for GPIO Led"
depends on LEDS_CLASS
help
This option enable support for led
source "drivers/redled/Kconfig"
包含drivers/redled這個路徑下的驅動文件,方便對菜單管理
config LED_4412
配置選項的名稱LED_4412
tristate "Led Support for GPIO Led"
tristate表示驅動狀態(1、驅動編譯成模塊,2、驅動編譯到內核,3、不編譯),
與之對應的還有bool(1、編譯到內核,2、不編譯)
「Led Support for GPIO Led」 是make menuconfig顯示的名字
depends on LEDS_CLASS
首先是打開我們linux源碼的char文件位置
cd /work/linux-4.1.15/drivers/char/
新建helloworld文件夾
mkdir helloworld
chmod 777 helloworld
複製過來我們之前的helloworld.c 文件就可以了
第二步,新建helloworld對應的Kconfignano Kconfig
根據上面的例子寫出helloworld的Kconfig
config HELLOWORLD
tristate "helloworld"
help
This option enable support for helloworld
nano Makefile
obj-$(CONFIG_HELLOWORLD)+=helloworld.o
返回上一層目錄,來到char目錄
首先是Makefile
obj-$(CONFIG_HELLOWORLD) += helloworld/
然後就是Kconfig文件
source "drivers/char/helloworld/Kconfig"
首先執行一個操作
. /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa9hf-neon-poky-linux-gnueabi
make distclean
清除掉linux源碼根目錄下的.config文件
然後可以
ls .config
查看一下是否被清除掉
make menuconfig的配置文件有一個默認的
cd arch/arm/configs/
我們可以在文件下找到imx_v7_defconfig
我們這裡後面還需要用到,現在需要的是把imx_v7_defconfig複製成linux源碼根目錄下的.config文件
cp imx_v7_defconfig /work/linux-4.1.15/.config
上一步的複製主要為了這一步,因為我們的make menuconfig運行,就是配置我們的.config文件
然後我們就可以找到我們的hello world了
找到以後,使用 空格 操作,修改成編譯到內核
之後保存退出就可以了
這時候我們可以打開.config文件,查看是不是修改成功了
nano .config
打開後,ctrl+w 就可以搜索我們的hello
剛才默認配置文件imx_v7_defconfig變成臨時的配置文件 .config,現在我們要變回去,因為後面的 make imx_v7_defconfig 操作,會從目錄/arch/arm/configs中找到imx_v7_defconfig來進行加載配置
這裡使用腳本文件
#!/bin/bash
make distclean
make imx_v7_defconfig
make zImage -j16
make dtbs
make modules -j16
執行完畢後,我們查看是否成功,通過helloworld目錄下有沒有編譯後生成的helloworld.o文件就可以了