原來Linux內核中有一張代碼地圖呀,哈哈,悟空還是挺高興的,心覺着吧,這下可以根據這張內核地圖來研究內核代碼了吧。懷着這興致,打開內核根目錄下的Makefile文件一看,哎呀!完全看不懂呀有木有?悟空的心情瞬間低落了下來,看來有了內核地圖,路還是沒那麼容易走呀!面對Linux內核這汪洋的大海,悟空心想,還是從幹中學吧,先編譯個內核鏡像來看看先,可是如何編譯呢?還是請教一下師傅吧,於是悟空撥通了唐僧的手機。
悟空:師傅,請教您個事。
唐僧:你這潑猴,盡壞爲師好事!
悟空:???
唐僧:爲師正被女妖精調戲……哦不,正在降服女妖精,有事快說!
悟空:……如何編譯Linux內核?
唐僧:知道交叉編譯工具不?
悟空:俺知道,就在編譯工具本身運行在一個特定平臺上,爲另一特定平臺的處理器編譯程序的工具鏈。
唐僧:不錯,有長進.你下的內核版本是多少?
悟空:3.19.3。
唐僧:挺新的呀!好吧,爲師就以ARM架構下的A10 Soc爲例,教你如何編譯個內核鏡像吧。
首先解壓內核源碼包,然後切換到內核源碼根目錄;
執行這兩條指令就行了:
tar -xvf ./kernel_source_pkg
cd ./kernel_path
其中kernel_source_pkg就是你下載的內核源碼包,kernel_path就是解壓後的目錄;
執行,
make ARCH=arm sunxi_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux- zImage
這兩條命令就可以了,然後就等着編譯完成,就可以得到一個可以在A10上面運行的內核鏡像zImage了,腫麼樣?簡單吧。
悟空:哦,我知道了,ARCH是指定處理器架構,CROSS_COMPILE指定交叉編譯工具,根據sunxi_defconfig默認配置文件進行編譯是吧?
唐僧: 嗯,正確,還挺聰明的嘛。哦哦哦,女施主別別別這樣……
斷線ing...