動手編譯內核之前,至少應該看看源碼根目錄下的README文件,并參考一些其他的資料,了解編譯一個內核所需要的基本條件和環境,以及基本的步驟。
交叉編譯器是arm-iwmmxt-linux-gnueabi-gcc(4.2.1),選用的內核版本是Linux-2.6.22.6。以下操作均以普通用戶身份進行:
(1)make mrproper
編譯之前檢查內核源碼樹是否“純凈”(clean),必作。
(2)make ARCH=arm CROSS_COMPILE=arm-iwmmxt-linux-gnueabi- menuconfig
配置內核。2.6內核早已支持圖形界面的xconfig和gconfig,不過還是推薦使用menuconfig,更容易配置。選擇使用PXA270處理器的mainstone開發板作為目標系統進行試驗(In HCDDBBVA0 Development Platform),并精簡不必要的選項和模塊。
內核配置選項中目標系統名稱與具體開發板的對應關系可以查看arch/arm/mach-pxa/Kconfig文件。
配置完畢選擇保存,默認會將當前配置保存到.config文件,也可以一個文件名如test.config,下次配置時可以load這個文件加載相應的配置。
(3)make ARCH=arm CROSS_COMPILE=arm-iwmmxt-linux-gnueabi-
編譯內核。
可能遇到nvram.c中“undefined reference to `rtc_lock'”的錯誤。修正辦法是:在nvram.c中“#Include ”,修改include/linux/mc146818rtc.h文件,將其中對“#Include ”一段的條件編譯選項“#Ifdef __KERNEL__ ... #Endif”去掉。
編譯完畢可以使用命令"echo $?"檢查編譯是否正常完成,正確結果為0。
這時在內核源碼樹頂層目錄生成了vmlinux(ELF格式的非壓縮內核)以及相應的符號表文件System.map,可以直接下載到內存進行調試。另外還生成了arch/arm/boot/compressed/vmlinux(ELF格式的壓縮內核),還有arch/arm/boot/zImage (壓縮內核映像文件)。
查看vmlinux文件信息如下:
[aaronwong@localhost linux-2.6.22.6]$ file vmlinux
vmlinux: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, not stripped
(4)make ARCH=arm CROSS_COMPILE=arm-iwmmxt-linux-gnueabi- INSTALL_MOD_PATH=${TESTROOTFS} modules_install
安裝內核模塊。先定義一個${TESTROOTFS},將模塊安裝到這里。
(5)安裝內核。
a)cp vmlinux ${TESTROOTFS}/boot/vmlinux-2.6.22.6
b)cp System.map ${TESTROOTFS}/boot/System.map-2.6.22.6
c)cp .config ${TESTROOTFS}/boot/config-2.6.22.6
上一篇:工業熱電偶執行標準
下一篇:如何正確選購高低溫試驗箱
免責聲明
- 凡本網注明"來源:智能制造網"的所有作品,版權均屬于智能制造網,轉載請必須注明智能制造網,http://www.xashilian.com。違反者本網將追究相關法律責任。
- 企業發布的公司新聞、技術文章、資料下載等內容,如涉及侵權、違規遭投訴的,一律由發布企業自行承擔責任,本網有權刪除內容并追溯責任。
- 本網轉載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網贊同其觀點或證實其內容的真實性,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網站或個人從本網轉載時,必須保留本網注明的作品來源,并自負版權等法律責任。
- 如涉及作品內容、版權等問題,請在作品發表之日起一周內與本網聯系,否則視為放棄相關權利。
2025長三角國際智能儀表/線纜產業博覽會
展會城市:滁州市展會時間:2025-11-11