日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Arm Linux交叉编译和连接过程分析(2)

發布時間:2023/12/10 linux 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Arm Linux交叉编译和连接过程分析(2) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

二、編譯內核鏡像過程

1、編譯過程中涉及到到文件:

/Makefile 編譯產生頂層vmlinux鏡像文件 /scripts/Kbuild.include ? make過程中到一些基本定義 /scripts/Makefile.lib?????? 編譯內核時用到到函數庫文件 /scripts/Makefile.build???? 內核編譯到相關命令文件 /arch/arm/Makefile??????? 這個是體系結構相關makefile文件 /arch/arm/Kconfig??????? 內核編譯到配置文件 /arch/arm/boot/Makefile 生成uImage,zImage,Image到編譯文件 /arch/arm/boot/compressed/Makefile 生成最終vmlinux到編譯文件 /arch/arm/mach-sep4020/Makefile SEP4020系統結構的編譯文件 ?

2、編譯過程解析;

2.1 /include/linux/autoconfig.h的產生:

在頂層Makefile487行有相應的編譯命令,這個就是把我們頂層的.config文件轉變成相應的系統的autoconfig.h文件,而在/include/linux/config.h中有這么一句: #include <linux/autoconf.h> 以后在c文件中會包含這個/include/linux/config.h頭文件的,也即包含了linux/autoconf.h文件

2.2vmlinux的依賴關系

2.2.1在/Makefile中的298行 # We need some generic definitions include? $(srctree)/scripts/Kbuild.include 包含了scripts/Kbuild.include文件,在這里定義了大量的函數和變量,供頂層makefile和其他makefile文件使用。?
?
2.2.2在頂層makefile文件的第175行,包含了arch/arm/Makefile。這個是體系結構相關makefile文件。它定義了體系結構相關的一些變量及規則。 下面這個地方將/arch/arm/Makefile文件引入
2.2.3當執行”make”時,arch/arm/Makefile中的499行的規則將是make遇到的第一個規則:
all:?? vmlinux
export KBUILD_IMAGE ?= vmlinux(變量賦值) 2.2.4vmlinux目標的規則在頂層Makefile的第741行定義。
vmlinux: $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) $(kallsyms.o) FORCE ???????? $(call if_changed_rule,vmlinux__) ???????? $(Q)rm -f .old_version
2.2.5這里涉及到幾個變量,先看看這幾個變量的定義,前三個變量分別在頂層Makefile的605、606、608行定義。? 2.2.6其中head-y在arch/arm/Makefile中第72行定義,
head-y??????????????? := arch/arm/kernel/head.o arch/arm/kernel/init_task.o
2.2.7 init-y在頂層makefile的462行定義?

? 后又在第567行進行處理
init-y????????????? := $(patsubst %/, %/built-in.o, $(init-y))
? 這里的$(patsubst %/, %/built-in.o, $(init-y)) 這個語句就是將init/ 下的所有c文件編譯成目標文件build-in.o
所以變量init-y應為
init-y????????????? := init/built-in.o
因此
vmlinux-init := arch/arm/kernel/head$(MMUEXT).o arch/arm/kernel/init_task.o init/built-in.o
同理,其他幾個變量也可通過類似方法進行分析,這里不一一分析了。 2.5vmlinux-init這個變量的產生構建規則在頂層Makefile 747行定義:
$(sort $(vmlinux-init) $(vmlinux-main)) $(vmlinux-lds): $(vmlinux-dirs) ;
這里是一個空命令的規則。空命令行可以防止make在執行時試圖為重建這個目標去查找隱含命令。其依賴為vmlinux-dirs,這個變量在頂層Makefile第561行定義: 這個變量指定了一系列要進入的下層目錄。他的規則在頂層Makefile第757行定義
$(vmlinux-dirs): prepare scripts
?????? $(Q)$(MAKE) $(build)=$@
這里的兩個依賴就不分析了,主要看一下這個規則的命令,build和$@變量展開后如下
?????? $(Q)$(MAKE) -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build ?\
??????? obj =$(vmlinux-dirs)
這里會再一次進入scripts/Makefile.build執行82行規則
__build: $(if $(KBUILD_BUILTIN),$(builtin-target) $(lib-target) $(extra-y)) \
?????? ?$(if $(KBUILD_MODULES),$(obj-m)) \
?????? ?$(subdir-ym) $(always)
?????? @:
?$(if $(KBUILD_BUILTIN),$(builtin-target))表示若KBUILD_BUILTIN定義了,則整個表達式為$(builtin-target)
因為KBUILD_BUILTIN在頂層Makefile 195行中被初始化為1,所以這個規則的依賴有一個builtin-target變量。這個變量在scripts/Makefile.build的77行定義
ifneq ($(strip $(obj-y) $(obj-m) $(obj-n) $(obj-) $(lib-target)),) builtin-target := $(obj)/built-in.o
endif (strip用法:strip <選項> 輸入文件?? 作用:從文件中刪除符號和節)
變量obj就是vmlinux-dirs變量指定的目錄,這在前面說到的。所以這里會構建$(vmlinux-dirs)/built-in.o目標,在scripts/Makefile.build文件的251行開始,有這個目標的規則及命令的定義?
? scripts/Makefile.build在第15行開始包含了vmlinux-dirs變量指定目錄中的Makefile文件,在這些makefile文件中會指定obj-y變量,它指定的都是一些*.o目標文件, 這些*.o文件的生成方法由scripts/Makefile.build文件192行的模式規則指定
%.o: %.c FORCE
?????? $(call cmd,force_checksrc)
?????? $(call if_changed_rule,cc_o_c) 這個就是我們看到的編譯各個目錄下.o目標文件的過程,這個中間在182行中: $(if $($(quiet)cmd_cc_o_c),echo '? $(call escsq,$($(quiet)cmd_cc_o_c))';)? \(其中的分號表示不顯示命令執行) 這個就會在屏幕上輸出編譯的信息: CC????? net/ipv4/devinet.o
通過上面這一系列的步驟,就編譯鏈接出由變量vmlinux-init指定的目標,vmlinux-main變量指定的目標的構建與此類似。

總結

以上是生活随笔為你收集整理的Arm Linux交叉编译和连接过程分析(2)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 在线播放国产精品 | 午夜精彩视频 | 精品国产无码AV | 久久久久青草 | 亚洲久操| 国产3级在线 | 先锋影音一区二区 | 色先锋在线 | 中文区中文字幕免费看 | 亚洲色图自拍 | 亚洲av无码一区二区乱子仑 | 最新欧美日韩 | 国产女主播在线播放 | 国产3页| 欧美xxxxbbb | 国产精品一区二区三区四区视频 | 中文字幕乱码无码人妻系列蜜桃 | 亚洲无限观看 | 女人天堂av | porn麻豆| 污片在线看 | 日本亚洲一区二区 | 国产老女人乱淫免费可以 | 亚洲AV无码AV吞精久久中文版 | 日本视频在线看 | www夜夜操| 插骚| 色99色| 五月天综合激情 | 国产三级在线观看完整版 | 两根大肉大捧一进一出好爽视频 | 国产a黄| 日日碰狠狠躁久久躁蜜桃 | 欧美激情在线观看一区 | 亚洲熟妇色自偷自拍另类 | 久久久久久网址 | 国产精品亚洲视频 | 中文字幕影院 | jizzjizz亚洲 | 日韩中文电影 | 日本视频在线免费 | 欧美色图亚洲色 | 日韩中文字幕在线观看 | 欧美激情视频一区 | 操操操干干干 | 免费在线观看视频a | 另类激情综合 | 黄色网在线播放 | 午夜在线精品 | 日韩福利社 | 深夜福利麻豆 | 香蕉视频官网 | 黄色三级网站 | 在线观看视频免费 | 亚洲国产精品国自产拍av | 久久久在线观看 | 中文字幕97 | 久久中文字幕无码 | 爱搞国产 | 亚洲一区二区三区黄色 | 伊人成人在线观看 | 中文字幕免费一区 | 成人免费午夜视频 | 欧美精品在线第一页 | 久久久av一区二区三区 | 91黄免费 | 亚洲精品国产精品乱码不99按摩 | 色眯眯视频| 欧美激情精品久久久久久变态 | 多毛的亚洲人毛茸茸 | 国产成人av网站 | 嫩草影院av | 宅男噜噜噜666在线观看 | 老头av| 国产精品日韩精品欧美精品 | 一本色道久久综合亚洲精品酒店 | 初尝人妻少妇中文字幕 | 午夜高清 | 国产又粗又深又猛又爽又在线观看 | 99热青青草 | 国产亚洲精品久久 | 国产精品精品久久久久久 | 乱日视频| 亚洲精品视频在线免费 | 免费观看成人鲁鲁鲁鲁鲁视频 | 欧美三级午夜理伦三级老人 | 激情精品| 欧美日韩a√ | 一本久道综合色婷婷五月 | 91视频精品 | 奇米影视第4色 | 成人免费看黄 | 欧美啪啪网站 | 成人在线免费电影 | 九九热精品在线观看 | 成人a级片 | 日韩视频免费 | 黄色中文视频 | 好看的中文字幕电影 |