紅酒營銷型網(wǎng)站建設(shè)seo創(chuàng)業(yè)
一. 編譯的實質(zhì)
基于頭文件和c文件--->產(chǎn)生對象文件(.o)
將所有的對象文件鏈接起來,產(chǎn)生可執(zhí)行文件。
內(nèi)核的編譯系統(tǒng)組成
Makefile
分布在內(nèi)核源代碼中的Makefile, 定義內(nèi)核的編譯規(guī)則,配合Kconfig使用。
Kconfig
配置文件,給用戶提供配置選項的功能,make menuconfig 等命令根據(jù)此文件生成配置文件菜單。
配置工具
包括配置命令解釋器(解析Kconfig)和內(nèi)核配置的用戶界面程序等。
使用make config、make menuconfig等命令時, 內(nèi)核頂層目錄會生成一個".config"的配置文件, 該配置文件記錄了哪些功能會被編譯進內(nèi)核, 哪些功能會被編譯成內(nèi)核模塊。
運行make menuconfig時, 配置工具首先分析與體系結(jié)構(gòu)對應(yīng)的 arch/< arch >/Kconfig 文件, arch/< arch >/Kconfig 文件中除本身包含一些與體系結(jié)構(gòu)相關(guān)的配置項和配置菜單以外, 還通過 source 語句引入下一層的 Kconfig 文件。
配置后生成文件:
include/config: auto.conf
include/generated: autoconf.h
二. 相關(guān)命令
2.1 清理配置
指定輸出目錄
#除了保存config文件以及構(gòu)建外圍模塊必要的文件,其他的全部清除。
make clean O=build#清理全部生成的文件+config文件+不同的備份文件
make mrproper O=build#徹底的清理,等價于clean + mrproper
make distclean O=build
2.2 配置編譯選項
指定arch和輸出目錄
# 默認內(nèi)核配置
make O=build defconfig
make O=build ARCH=arm xxx_defconfig# 或者
cp arch/arm/configs/xxx_defconfig /build/.config# 修改配置(可能需要切換到gcc下)
make menuconfig O=build
2.3 編譯內(nèi)核
指定交叉編譯工具,線程數(shù),輸出目錄
make ARCH=arm CC=arm-oe-linux-gnueabi-gcc LD=arm-oe-linux-gnueabi-ld.bfd -j 4 O=build#或者
make zImage O=build ARCH=arm CC="${CC}" LD="arm-oe-linux-gnueabi-ld.bfd" -j 4 O=build
2.4 編譯內(nèi)核模塊
指定交叉編譯工具,線程數(shù),輸出目錄
make modules ARCH=arm CC=arm-oe-linux-gnueabi-gcc LD=arm-oe-linux-gnueabi-ld.bfd -j 4 O=build#或者
make modules O=obj ARCH=arm CC="${CC}" LD="arm-oe-linux-gnueabi-ld.bfd" -j 4 O=build