linux 核心make編譯鏈結相關變數定義

2021-07-01 23:34:54 字數 1179 閱讀 1937

這些定義很重要,不閱讀源**是體會不到的,在閱讀源**時,看看這些定義,會事半功倍。

鏈結檔案:

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,...