1. 程式人生 > >Linux核心編譯過程中遇到的問題

Linux核心編譯過程中遇到的問題

首先還是宣告編譯環境,和交叉編譯工具,還有核心是天嵌移植過的核心原始碼,上一篇寫的編譯核心問題,移植沒有解決,今天編譯成功後,感覺上次問題好白痴,我還去改了很多檔案和函式,殊不知是自己操作錯誤,在此宣告,有些版本的核心都是移植過的,如果是按照第三方提供的資料或者視訊去編譯可能會出現各種錯誤,這個時候首先去做的不是查錯誤,可能更好的辦法是去查下相關手冊,我上次就是犯了哪個錯誤。當然從kernel.org上下的核心編譯時需要去做很多工作的,這只是TQ的光碟核心

環境 red hat enterprise linux-5
交叉工具 arm-Linux-。。。4.3.3
核心版本 2.6.30.4(tq光碟)

    上次編譯出現很多錯誤,一直也沒解決,最後回頭去看手冊發現,tq提供的核心原始碼本身就是配置好的,不需要再去做配置,而且用的就是三星的原始碼,也不需要去在make menuconfig去選system type和開發板型別,system type裡面廠家已經加了tq開發板選項,如果你用的是tq板子和帶的核心原始碼按照下面步驟就能編譯通過,第三方的視訊或者資料有的是針對kernel網站上的原始碼去編譯的。下面是tq自帶的核心原始碼編譯過程,都是預設就好。

tar xvfj linux-2.6.30.4_20100601.tar.bz2 -C /xxx,
然 後 將 其 解 壓 到 PC 的 Linux 的 “ /opt/EmbedSky/linux-2.6.30.4/ ” 目 錄 下 , 然 後 使 用 命 令 : #cp -f“config_EmbedSky_W43.config”(這裡用 256MB 的 Nand Flash 搭配天嵌(4.3寸屏為例),
然後編譯核心,命令為:“#make zImage”,編譯結束後,把arch/arm/boot/zImage 拷貝到tftpboot目錄下就可以燒寫了。


  CC      arch/arm/boot/compressed/misc.o
  LD      arch/arm/boot/compressed/vmlinux
  OBJCOPY arch/arm/boot/zImage
  Kernel: arch/arm/boot/zImage is ready

下面把如果按照第三方提供的方法可能出現的錯誤貼到下面,用的核心是tq的

如果make menuconfig 對system type 做了配置,會出現下面錯誤

/home/lesson/lesson3/opt/EmbedSky/linux-2.6.30.4/arch/arm/include/asm/glue.h:119:2: error: #error Unknown data abort handler type
/home/lesson/lesson3/opt/EmbedSky/linux-2.6.30.4/arch/arm/include/asm/glue.h:146:2: error: #error Unknown prefetch abort handler type
In file included from include/linux/mm_types.h:15,
                 from include/linux/sched.h:61,
                 from arch/arm/kernel/asm-offsets.c:13:
/home/lesson/lesson3/opt/EmbedSky/linux-2.6.30.4/arch/arm/include/asm/page.h:116:2: error: #error Unknown user operations model
make[1]: *** [arch/arm/kernel/asm-offsets.s] 錯誤 1
make: *** [prepare0] 錯誤 2

剛開始以為是說沒有選擇cpu我又把system type裡面2440的開發板也選上了又出現新的錯誤

drivers/input/keyboard/tq2440_buttons.c:593: warning: initialization discards qualifiers from pointer target type
make[3]: *** [drivers/input/keyboard/tq2440_buttons.o] 錯誤 1
make[2]: *** [drivers/input/keyboard] 錯誤 2
make[1]: *** [drivers/input] 錯誤 2
make: *** [drivers] 錯誤 2
最後也沒解決,所以去回過頭去看手冊發現每個廠家的核心編譯由於移植原因有些不同,當然你用通用的命令去編譯也是不會出錯的,只是配置問題。

還有就是tq核心解壓過以後配置時候可以有兩種操作都不會有錯,此處都驗證過了。

一個是make menuconfig 選擇預設就好,不做操作就是為了生成.config這個檔案。

二個是解壓後的核心裡面有個config_EmbedSky_Wxx配置檔案已經配置好了,#cp -f config_EmbedSky_W43 .config直接改成.config也可以都是可以通過的。至此糾結很多天白痴問題解決了。