吴忠躺衫网络科技有限公司

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>嵌入式開發>關于Linux 2.6內核Makefile的分析

關于Linux 2.6內核Makefile的分析

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

資料介紹

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

評論

查看更多

下載排行

本周

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

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21548次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6653次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537796次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191185次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183278次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
百家乐官网鞋| 网上百家乐官网娱乐场开户注册 | 宜川县| 网上百家乐赌城| 百家乐官网网上真钱娱乐| 全讯网址| 足球百家乐投注网出租| 百家乐软件代打| 合江县| 广州百家乐桌子| 澳门百家乐官网免费开户| 大发888官方c8| 百家乐看| 百家乐免费试玩游戏| 宁强县| 海王星国际娱乐| 大发888游戏平台 送1688元现金礼金领取| 百家乐官网园选百利宫| 大发888游戏下载中心| 百家乐千术手法| 优博百家乐娱乐城| 风水24个向的意思| 金彩百家乐官网的玩法技巧和规则 | e世博百家乐技巧| 金花百家乐官网的玩法技巧和规则| 香港六合彩报码室| 百家乐翻天百度影音| 大世界百家乐赌场娱乐网规则| 百家乐官网旺门打法| 百家乐官网连长| 真人百家乐官网输钱惨了| 宁海县| 百家乐官网技巧发布| 禹城市| 闸北区| 百家乐官网视频游戏盗号| 百家乐官网风云论坛| 白玉县| 皇冠网百家乐官网平台| 安西县| 百家乐官网怎么会赢|