編譯s3c2410的linux2.4.18內(nèi)核
進(jìn)入內(nèi)核源碼所在的路徑/usr/src/linux-2.4中
A)make mrproper//清理內(nèi)核源代碼樹,如果是第一次配置內(nèi)核則可以不運(yùn)行
//ls .config//驗(yàn)證內(nèi)核配置文件不存在
B)make menuconfig//配置內(nèi)核以及內(nèi)核模塊,其實(shí)這里的還可以使用
//(1)make config(交互式問答)
//(2)cp /etc/config-2.4.20-8 .config(通過復(fù)制現(xiàn)有的配置文件而獲?。?/p>
//(3)make oldconfig(通過舊內(nèi)核生成)
//(4)make xconfig(圖形界面下編譯)
//如果要從圖形界面定制內(nèi)核,需要安裝第三張光盤中的tk包。
//這里強(qiáng)烈推薦使用make menuconfig。
//在進(jìn)入內(nèi)核配置菜單之后:
//(1)[*]表示編譯進(jìn)入內(nèi)核——隨系統(tǒng)啟動而啟動
//(2)[]表示配置項不編譯進(jìn)內(nèi)核
//(3)
//(4)< >不編譯進(jìn)內(nèi)核也不作為內(nèi)核模塊進(jìn)行編譯
C)make dep//依賴性關(guān)系
D)make bzImage//編譯內(nèi)核核心
E)make modules//編譯內(nèi)核模塊
F)make install//安裝編譯好的新內(nèi)核核心,嵌入式這步省略
G)make modules_install
//安裝內(nèi)核模塊(即便事實(shí)上什么也沒有建構(gòu))。 這會把內(nèi)核模塊安裝入 /lib/modules/
嵌入式的話放在宿主機(jī)的tmp/lib/modules/<
make mrproper后會徹底改變原來的配置,所以陽初提供的2410linux_src.tar.gz源碼包
解壓后直接make menuconfig,保存配置成一個配置文件,以后再編譯內(nèi)核時就可以make mrproper,make menuconfig調(diào)出第一次的配置,在此配置上修改。
在開發(fā)板上輸入
#insmod ctrlboard.o
ctrlboard.o: unresolved symbol devfs_register
ctrlboard.o: unresolved symbol __wake_up
ctrlboard.o: unresolved symbol unregister_chrdev
ctrlboard.o: unresolved symbol register_chrdev
ctrlboard.o: unresolved symbol __arch_copy_to_user
ctrlboard.o: unresolved symbol free_irq
ctrlboard.o: unresolved symbol devfs_unregister
ctrlboard.o: unresolved symbol interruptible_sleep_on
ctrlboard.o: unresolved symbol set_external_irq
ctrlboard.o: unresolved symbol request_irq
ctrlboard.o: unresolved symbol __arch_copy_from_user
ctrlboard.o: unresolved symbol printk
ctrlboard.o: unresolved symbol udelay
出現(xiàn)上面錯誤的原因是編譯內(nèi)核的時候選擇下面這一項,這項表示驅(qū)動程序版本跟內(nèi)核版本不嚴(yán)格一樣的話,insmod將找不到內(nèi)核函數(shù)
Loadable module support -------->
[ ]set version information on all module symboles
啟用設(shè)備文件系統(tǒng)devfs,在配置內(nèi)核時選擇
File systems--------------->
[]/dev file system support
#看內(nèi)核導(dǎo)出符號
cat /proc/ksyms
如果編譯linux2.6.14.1內(nèi)核,則是
make menuconfig
make zImage