在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>嵌入式開(kāi)發(fā)>關(guān)于Linux 2.6內(nèi)核Makefile的分析

關(guān)于Linux 2.6內(nèi)核Makefile的分析

2017-11-02 | rar | 0.5 MB | 次下載 | 1積分

資料介紹

[摘要] 由于Linux的獨(dú)特優(yōu)勢(shì),使越來(lái)越多的企業(yè)和科研機(jī)構(gòu)把目光轉(zhuǎn)向Linux的開(kāi)發(fā)和研究上。目前Linux最新的穩(wěn)定內(nèi)核版本為2.6.17,但是當(dāng)今絕大部分對(duì)于Linux Makefile的介紹文章都是基于2.4內(nèi)核的,可以說(shuō)關(guān)于2.6內(nèi)核Makefile相關(guān)的文章鳳毛麟角,筆者抽時(shí)間完成了這篇分析文章,讓讀者迅速熟悉Linux最新Makefile體系,從而加深對(duì)內(nèi)核的理解,同時(shí)也希望能對(duì)Linux在公司的推廣起到一定的推動(dòng)作用,算是拋磚引玉吧!
  1 Makefile組織層次
  Linux的Make體系由如下幾部分組成:
  ? 頂層Makefile
  頂層Makefile通過(guò)讀取配置文件,遞歸編譯內(nèi)核代碼樹(shù)的相關(guān)目錄,從而產(chǎn)生兩個(gè)重要的目標(biāo)文件:vmlinux和模塊。
  ? 內(nèi)核相關(guān)Makefile
  位于arch/$(ARCH) 目錄下,為頂層Makefile提供與具體硬件體協(xié)結(jié)構(gòu)相關(guān)的信息
  ? 公共編譯規(guī)則定義文件。
  包括Makefile.build 、Makefile.clean、Makefile.lib、Makefile.host等文件組成。這些文件位于scripts目錄中,定義了編譯需要的公共的規(guī)則和定義。
  ? 內(nèi)核配置文件 .config
  通過(guò)調(diào)用make menuconfig或者make xconfig命令,用戶可以選擇需要的配置來(lái)生成期望的目標(biāo)文件。
  ? 其他Makefile
  主要為整個(gè)Makefile體系提供各自模塊的目標(biāo)文件定義,上層Makefile根據(jù)它所定義的目標(biāo)來(lái)完成各自模塊的編譯。
  2 Makefile的使用
  在編譯內(nèi)核之前,用戶必須首先完成必要的配置。Linux內(nèi)核提供了數(shù)不勝數(shù)的功能,支持眾多的硬件體系結(jié)構(gòu),這就需要用戶對(duì)將要生成的內(nèi)核進(jìn)行裁減。內(nèi)核提供了多種不同的工具來(lái)簡(jiǎn)化內(nèi)核的配置,最簡(jiǎn)單的一種是字符界面下命令行工具:
  make config
  這個(gè)工具會(huì)依次遍歷內(nèi)核所有的配置項(xiàng),要求用戶進(jìn)行逐項(xiàng)的選擇配置。這個(gè)工具會(huì)耗費(fèi)用戶太多時(shí)間,除非萬(wàn)不得以(你的編譯主機(jī)不支持其他配置工具)一般不建議使用。
  用戶還可以使用利用ncurse庫(kù)編制的圖形界面工具,這就是大名鼎鼎的:
  make menuconfig
  相信以前對(duì)2.4內(nèi)核比較熟悉的用戶一定不會(huì)陌生。當(dāng)然在2.6內(nèi)核中提供了更漂亮和方便的基于X11的圖形配置工具:
  make xconfig
  當(dāng)用戶使用這個(gè)工具對(duì)Linux內(nèi)核進(jìn)行配置時(shí),界面下方會(huì)出現(xiàn)這個(gè)配置項(xiàng)相關(guān)的幫助信息和簡(jiǎn)單描述,當(dāng)你對(duì)內(nèi)核配置選項(xiàng)不太熟悉時(shí),建議你使用這個(gè)工具來(lái)進(jìn)行內(nèi)核配置。
  當(dāng)用戶完成配置后,配置工具會(huì)自動(dòng)生成.config文件,它被保存在內(nèi)核代碼樹(shù)的根目錄下。用戶可以很容易找到它,當(dāng)然用戶也可以直接對(duì)這個(gè)文件進(jìn)行簡(jiǎn)單的修改。但是當(dāng)你修改過(guò)配置文件之后,你必須通過(guò)下面的命令來(lái)驗(yàn)證和更新配置:
  make oldconfig
  跟2.4版本的不同之處在于,用戶不需要顯示的調(diào)用make dep命令來(lái)生成依賴(lài)文件,內(nèi)核會(huì)自動(dòng)維護(hù)代碼間的依賴(lài)關(guān)系。
  當(dāng)一切工作完成以后,用戶只需要簡(jiǎn)單鍵入make,剩下所有的工作makefile就會(huì)自動(dòng)替你完成了。
  3 Makefile編譯流程
  當(dāng)用戶使用Linux的Makefile編譯內(nèi)核版本時(shí),Makefile的編譯流程如下:
  ? 使用命令行或者圖形界面配置工具,對(duì)內(nèi)核進(jìn)行裁減,生成.config配置文件
  ? 保存內(nèi)核版本信息到 include/linux/version.h
  ? 產(chǎn)生符號(hào)鏈接 include/asm,指向?qū)嶋H目錄 include/asm-$(ARCH)
  ? 為最終目標(biāo)文件的生成進(jìn)行必要的準(zhǔn)備工作
  ? 遞歸進(jìn)入 /init 、/core、 /drivers、 /net、 /lib等目錄和其中的子目錄來(lái)編譯生成所有的目標(biāo)文件
  ? 鏈接上述過(guò)程產(chǎn)生的目標(biāo)文件生成vmlinux,vmlinux存放在內(nèi)核代碼樹(shù)的根目錄下
  ? 最后根據(jù) arch/$(ARCH)/Makefile文件定義的后期編譯的處理規(guī)則建立最終的映象bootimage,包括創(chuàng)建引導(dǎo)記錄、準(zhǔn)備initrd映象和相關(guān)處理
  4 Makefile關(guān)鍵規(guī)則和定義描述
  1) 目標(biāo)定義
  目標(biāo)定義是Makefile文件的核心部分,目標(biāo)定義通知Makefile需要生成哪些目標(biāo)文件、如何根據(jù)特殊的編譯選項(xiàng)鏈接目標(biāo)文件,同時(shí)控制哪些子目錄要遞歸進(jìn)入進(jìn)行編譯。
  這個(gè)例子Makefile文件位于/fs/ext2目錄 :
  #
  # Makefile for the linux ext2-filesystem routines.
  #
  obj-$(CONFIG_EXT2_FS) += ext2.o
  ext2-y := balloc.o bitmap.o dir.o file.o fsync.o ialloc.o inode.o \
  ioctl.o namei.o super.o symlink.o
  ext2-$(CONFIG_EXT2_FS_XATTR) += xattr.o xattr_user.o xattr_trusted.o
  ext2-$(CONFIG_EXT2_FS_POSIX_ACL) += acl.o
  ext2-$(CONFIG_EXT2_FS_SECURITY) += xattr_security.o
  ext2-$(CONFIG_EXT2_FS_XIP) += xip.o
  這表示與ext2相關(guān)的目標(biāo)文件由 ext2-y定義的文件列表組成,其中ext2-$(*)是由內(nèi)核配置文件.config中的配置項(xiàng)決定,最終Makefile會(huì)在這個(gè)目錄下統(tǒng)一生成一個(gè)目標(biāo)文件ext2.o(由obj-$(CONFIG_EXT2_FS)決定)。其中obj-y表示為生成vmlinux文件所需要的目標(biāo)文件集合,具體的文件依賴(lài)于內(nèi)核配置。
  Makefile會(huì)編譯所有的$(obj-y)中定義的文件,然后調(diào)用鏈接器將這些文件鏈接到built-in.o文件中。最終built-in.o文件通過(guò)頂層Makefile鏈接到vmlinux中。值得注意的是$(obj-y)的文件順序很重要。列表文件可以重復(fù),文件第一次出現(xiàn)時(shí)將會(huì)鏈接到built-in.o中,后來(lái)出現(xiàn)的同名文件將會(huì)被忽略。文件順序直接決定了他們被調(diào)用的順序,這一點(diǎn)讀者需要特別注意。
  讀者可能會(huì)在某些Makefile中發(fā)現(xiàn)lib-y定義,所有包含在lib-y定義中的目標(biāo)文件都將會(huì)被編譯到該目錄下一個(gè)統(tǒng)一的庫(kù)文件中。值得注意的是lib-y定義一般被限制在 lib 和arch/$(ARCH)/lib 目錄中。
  體系makefile文件和頂層makefile文件共同定義了如何建立vmlinux文件的規(guī)則。
  $(head-y) 列舉首先鏈接到vmlinux的對(duì)象文件。
  $(libs-y) 列舉了能夠找到lib.a文件的目錄。
  其余的變量列舉了能夠找到內(nèi)嵌對(duì)象文件的目錄。
  $(init-y) 列舉的對(duì)象位于$(head-y)對(duì)象之后。
  然后是如下位置順序:
  $(core-y), $(libs-y), $(drivers-y) 和 $(net-y)。
  頂層makefile定義了所有通用目錄,arch/$(ARCH)/Makefile文件只需增加體系相關(guān)的目錄。
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1TC358743XBG評(píng)估板參考手冊(cè)
  2. 1.36 MB  |  330次下載  |  免費(fèi)
  3. 2開(kāi)關(guān)電源基礎(chǔ)知識(shí)
  4. 5.73 MB  |  6次下載  |  免費(fèi)
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設(shè)計(jì)
  8. 0.60 MB  |  3次下載  |  免費(fèi)
  9. 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
  10. 0.61 MB  |  2次下載  |  免費(fèi)
  11. 6基于FPGA的C8051F單片機(jī)開(kāi)發(fā)板設(shè)計(jì)
  12. 0.70 MB  |  2次下載  |  免費(fèi)
  13. 751單片機(jī)窗簾控制器仿真程序
  14. 1.93 MB  |  2次下載  |  免費(fèi)
  15. 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21548次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
  16. 0.00 MB  |  6653次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537796次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191185次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183278次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)
主站蜘蛛池模板: 国产精品久久在线| 四虎影院精品在线观看| 日本乱理论片免费看| www.97色| 黄网站播放| 四虎影视免费| 在线午夜| 69日本xxxxxxxxx98| 四虎4hu影库永久地址| 岛国毛片| 国产黄网站| 日本三级午夜| 天天爱天天做天天干| 欧美不卡视频在线观看| 欧美+日本+国产+在线观看| 桃花色综合影院| 美女视频黄a视频美女大全| 美女18毛片| 四虎精品成在线播放| 9久久精品| 亚洲一区二区三区免费看| 日韩在线网| 国产精品乳摇在线播放| 波多野结衣第一页| 天堂影院在线| 亚洲国产午夜看片| 91福利免费视频| 四虎国产精品永久地址49| 在线免费影视| 免费观看黄网站| 国产色秀视频在线观看| 欧美性猛交xxx嘿人猛交| 2级毛片| 国产va精品免费观看| 超级乱淫伦网站| 免费观看黄a一级视频日本| 国产香蕉一区二区精品视频| 天堂网最新版中文| 天天干天天摸天天操| 在线观看三级网站| 一级特黄a视频|