這些定義很重要,不閱讀源**是體會不到的,在閱讀源**時,看看這些定義,會事半功倍。
鏈結檔案:
export kbuild_lds := arch/$(srcarch)/kernel/vmlinux.lds
page_offset:src\arch\arm\include\asm\memory.h : 核心位址空間 = config_page_offset, 3g – 4g
text_offset:src\arch\arm\makefile : 核心空間中核心**真正開始的地方 一般為0xc0008000 = 3g + 0x8000
%.ko: prepare scripts force:src/makefile 定義模組編譯
%/: prepare scripts force:src/makefile如何迴圈進入底層目錄。
src\scripts\kbuild.include: 中定義了 build 變數 build := -f $(if $(kbuild_src),$(srctree)/)scripts/makefile.build obj
src\scripts\makefile.build: 編譯時採用的makefile
src\scripts\kbuild.include中定義了if_changed_rule
kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))
kbuild-file := $(if $(wildcard $(kbuild-dir)/kbuild),$(kbuild-dir)/kbuild,$(kbuild-dir)/makefile)
include $(kbuild-file)
上面顏色字型決定了進入具體目錄的執行。
src/makefile:
export kbuild_vmlinux_init := $(head-y) $(init-y)
export kbuild_vmlinux_main := $(core-y) $(libs-y) $(drivers-y) $(net-y)
其中makefile 中的變數export 能被子makefile繼承。
Linux 用make進行巨集編譯
假設現在有main.c haha.c sin value.c cos value.c這4個檔案。若是想要編譯出乙個可執行檔案,則要經歷如下步驟 gcc c main.cgcc haha.cgcc c sin value.cgcc c cos value.cgcc o main main.o haha...
make編譯命令
1.make jx x表示數字,這個命令將編譯android系統並生成映象,xx表示可以使用到的cpu核數,這在配置好的電腦上特別有用,公司的16核ubuntu伺服器執行make j16只要不到20分鐘,而雙核pc上需要4個小時!2.make snod 3.make cts 4.make insta...
編譯 linux 核心
一 準備工作 tpv te0 首先說明,下面帶 號的行都是要輸入的命令列,且本文提到的所有命令列都在終端裡輸入。ixpub技術部落格 rc0p a6zx j 啟動linux系統,並用根使用者登入,進入終端模式下。6i sb w,a0 ixpub技術部落格c gng,y y ixpub技術部落格 k,...