中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Arm Linux交叉編譯和連接過(guò)程分析(1) - Linux - Linux My world
Arm Linux交叉編譯和連接過(guò)程分析(1)

一、配置內(nèi)核(Kconfig

我們配置內(nèi)核是實(shí)質(zhì)是根據(jù)眾多目錄下面的Kconfig文件中組合成我們需要的一個(gè)最佳選擇,即最終在根目錄下面生成的.config文件,而這個(gè)文件會(huì)在根目錄Makefile下調(diào)用的。這一部分我們主要討論整個(gè)SEP4020體系在內(nèi)核中各個(gè)Kconfig文件是怎么組織的。

1、Make menuconfig的編譯生成過(guò)程:

這部分我們將make menuconfig它是怎末運(yùn)行,和調(diào)用哪些文件來(lái)實(shí)現(xiàn)圖形界面的。

我們先來(lái)看下我們鍵入make menuconfig會(huì)出現(xiàn)什么:

[root@localhost linux-v3.3]# make menuconfig

  HOSTCC  scripts/basic/fixdep

  HOSTCC  scripts/basic/split-include

  HOSTCC  scripts/basic/docproc

  HOSTCC  scripts/kconfig/conf.o

  HOSTCC  scripts/kconfig/kxgettext.o

  HOSTCC  scripts/kconfig/mconf.o

  HOSTCC  scripts/kconfig/zconf.tab.o

  HOSTLD  scripts/kconfig/mconf

  HOSTCC  scripts/kconfig/lxdialog/checklist.o

  HOSTCC  scripts/kconfig/lxdialog/inputbox.o

  HOSTCC  scripts/kconfig/lxdialog/lxdialog.o

  HOSTCC  scripts/kconfig/lxdialog/menubox.o

  HOSTCC  scripts/kconfig/lxdialog/msgbox.o

  HOSTCC  scripts/kconfig/lxdialog/textbox.o

  HOSTCC  scripts/kconfig/lxdialog/util.o

  HOSTCC  scripts/kconfig/lxdialog/yesno.o

  HOSTLD  scripts/kconfig/lxdialog/lxdialog

scripts/kconfig/mconf arch/arm/Kconfig

fs/Kconfig:767:warning: multi-line strings not supported

drivers/usb/gadget/Kconfig:406:warning: type of 'USB_ZERO_HNPTEST' redefined from 'boolean' to 'tristate'

#

# using defaults found in .config

#

*** End of Linux kernel configuration.

*** Execute 'make' to build the kernel or try 'make help'.

從上面我們看到實(shí)際上make menuconfig是一個(gè)Makefile編譯及運(yùn)行的過(guò)程,他先編譯了一大堆文件最后會(huì)生成scripts/kconfig/mconfscripts/kconfig/lxdialog/lxdialog這兩個(gè)應(yīng)用程序,其中scripts/kconfig/mconf會(huì)調(diào)用scripts/kconfig/lxdialog/lxdialog來(lái)顯示一個(gè)對(duì)話框的。

然后編譯好這兩個(gè)應(yīng)用程序后,緊接著運(yùn)行scripts/kconfig/mconf arch/arm/Kconfig

這個(gè)應(yīng)用程序,這個(gè)程序就讀入了我們SEP4020的體系架構(gòu)的Kconfig,然后就顯示出了我們見到的那個(gè)對(duì)話框了。

2、Make menuconfigMakefile的調(diào)用關(guān)系;

在這部分我們講下Makefile是怎樣一步步構(gòu)造出menuconfig這個(gè)對(duì)話框的:

1.2.1在頂層的Makefile中,可以查找到如下幾行定義的規(guī)則。

這就是生成內(nèi)核配置界面的命令規(guī)則,它也定義了執(zhí)行的目標(biāo)和依賴的前提條件,還有

要執(zhí)行的命令。

這條規(guī)則定義的目標(biāo)為config %config, 通配符%意味著可以包括config xconfig、 gconfig

menuconfigoldconfig等。依賴的前提條件是 scripts_basic outputmakefile,這些在 Makefile

也是規(guī)則定義,主要用來(lái)編譯生成配置工具。

那么這條規(guī)則執(zhí)行的命令就是執(zhí)行scripts/kconfig/Makefile指定的規(guī)則。相當(dāng)于:

make -C scripts/kconfig/  %config-C表示調(diào)用scripts/kconfig/目錄下的Makefile

這行命令是使用配置工具解析 arch/$(ARCH)/Kconfig 文件,生成內(nèi)核配置菜單。

$(ARCH)變量是 Linux 體系結(jié)構(gòu)定義,對(duì)應(yīng) arch 目錄下子目錄的名稱。Kconfig 包含了內(nèi)核配置菜單的內(nèi)容,那么 arch/$(ARCH)/Kconfig 是配置主菜單的文件,調(diào)用管理其他各級(jí)

Kconfig。根據(jù)配置工具的不同,內(nèi)核也有不同的配置方式。有命令行方式,還有圖形界面方式。

1.2.2這些內(nèi)核配置方式是在scripts/kconfig/Makefile中通過(guò)規(guī)則定義的。從這個(gè) Makefile中,可以找到下面一些規(guī)則定義。如果把變量或者通配符帶進(jìn)去,就可以明白要執(zhí)行的操作。

 

執(zhí)行命令:scripts/kconfig/mconf   arch/arm/Kconfig

使用lxdialog工具,生成光標(biāo)配置菜單。

1)由于mconf沒(méi)有產(chǎn)生根據(jù)Makefile的隱規(guī)則會(huì)推導(dǎo)生成mconf程序

mconf-objs     := mconf.o zconf.tab.o這個(gè)可以讓多個(gè)c文件生成最后的可執(zhí)行文件mconf

2)因?yàn)?/span> mconf調(diào)用lxdialog工具,所以需要先編譯scripts/kconfig/lxdialog目錄。

 

這會(huì)生成相應(yīng)的目標(biāo)文件最后生成lxdialog程序。

最后運(yùn)行

$< arch/$(ARCH)/Kconfig這個(gè)程序。

3SEP4020相關(guān)Kconfig的關(guān)系:

1.3.1 menuconfig的組織關(guān)系圖:

General setup --->                                            /init/kconfig

 

Loadable module support  --->                         /init/kconfig

[*] Enable loadable module support            /block/kconfig

 

System Type --->                                            /arch/arm/kconfig

ARM system type (sep4020)  --->    /arch/arm/kconfig

SEP4020 Implementations  --->    /arch/arm/kconfig

--- Processor Type                          /arch/arm/mm/kconfig

--- Processor Features                     /arch/arm/mm/kconfig

                                                                                                                                                    

Bus support  --->                                           /arch/arm/kconfig

                                                                                                                                                 Kernel Features  --->                               /arch/arm/kconfig

 [ ] Dynamic tick timer                     /kernel/time/kconfig

        Memory model (Flat Memory)  --->   /mm/kconfig

                                                                                                                                           

  

Boot options  --->                                          /arch/arm/kconfig

                                                                                                                                                

Floating point emulation  --->                          /arch/arm/kconfig

                                                                                                                                   

Userspace binary formats  --->                         /arch/arm/kconfig

                                                                        /fs/kconfig.binfmt 

                                                                                

 Power management options  --->                      /arch/arm/kconfig

                                                                      /kernel/power/kconfig

                                                                                                                                    

Networking  --->                                                  /net/kconfig

                                                                                                                                                  

Device Drivers  --->                                       /driver/kconfig

                                                                                                                                              File systems  --->                               /fs/kconfig

如果大家想新增一個(gè)芯片平臺(tái)和驅(qū)動(dòng),大家可以根據(jù)這個(gè)提示去相應(yīng)的Kconfig文件去添加相應(yīng)的內(nèi)容。等make menuconfig后就會(huì)在根目錄下生成.config文件這個(gè)文件會(huì)保存所以已經(jīng)選擇的Kconfig選項(xiàng)。

 

1.3.2 Kconfig的相關(guān)知識(shí);

1)菜單項(xiàng)

多數(shù)選項(xiàng)定義一個(gè)配置選項(xiàng),其他選項(xiàng)起輔助組織作用。舉例說(shuō)明單個(gè)的配置選項(xiàng)

的定義。

 

config MODVERSIONS

       bool "Set version information on all module symbols"

       depends MODULES

       help

           Usually, modules have to be recompiled whenever you switch to a new

           kernel………

每一行開頭用關(guān)鍵字“config ,后面可以跟多行。后面的幾行定義這個(gè)配置選項(xiàng)的屬性。

屬性包括配置選項(xiàng)的類型、選擇提示、依賴關(guān)系、幫助文檔和缺省值。同名的選項(xiàng)可以重復(fù)

定義多次,但是每次定義只有一個(gè)選擇提示并且類型不沖突。

2)菜單屬性:

3Kconfig語(yǔ)法:

 

 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Linux內(nèi)核中make ARCH=arm menuconfig時(shí)出錯(cuò)
也談Linux Kernel Hacking – Kconfig與Kbuild | Tony Bai
新內(nèi)核移植示例
Kconfig的感悟
Linux內(nèi)核構(gòu)建系統(tǒng)之三
修復(fù)mac 下 make menuconfig 的bug以及自定義make menuconfig界面
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服