作者 主題: 編譯 kernel  (閱讀 9356 次)

0 會員 與 1 訪客 正在閱讀本文。

shihyu

  • 活潑的大學生
  • ***
  • 文章數: 223
    • 檢視個人資料
編譯 kernel
« 於: 2009-04-03 07:58 »
http://opencsl.openfoundry.org/Lab02_kernel.rst.html


我照上面網頁教學步驟

輸入make ARCH=arm CROSS_COMPILE=arm-linux-uclibc-

出現下面錯誤訊息

代碼: [選擇]
make: arm-linux-uclibc-gcc: Command not found
  HOSTLD  scripts/kconfig/conf
scripts/kconfig/conf -s arch/arm/Kconfig
arch/arm/mach-lh7a40x/Kconfig:17:warning: 'select' used by config symbol 'MACH_L                                                                                                                               PD7A400' refer to undefined symbol 'HAS_TOUCHSCREEN_ADS7843_LH7'
arch/arm/mach-lh7a40x/Kconfig:27:warning: 'select' used by config symbol 'MACH_L                                                                                                                               PD7A404' refer to undefined symbol 'HAS_TOUCHSCREEN_ADC_LH7'
make: arm-linux-uclibc-gcc: Command not found
  CHK     include/linux/version.h
  UPD     include/linux/version.h
  SYMLINK include/asm-arm/arch -> include/asm-arm/arch-versatile
make[1]: `include/asm-arm/mach-types.h' is up to date.
  CHK     include/linux/utsrelease.h
  UPD     include/linux/utsrelease.h
  SYMLINK include/asm -> include/asm-arm
  CC      arch/arm/kernel/asm-offsets.s
/bin/sh: arm-linux-uclibc-gcc: not found
make[1]: *** [arch/arm/kernel/asm-offsets.s] Error 127
make: *** [prepare0] Error 2

再猜是不是我這步驟設定有問題

將游標移到選單最下方的「Load an Alternate Configuration File」,把下載下來的 configure 檔複製到 kernel source 中

謝謝
« 上次編輯: 2009-09-23 08:11 由 andrew »

fillano

  • 鑽研的研究生
  • *****
  • 文章數: 526
    • 檢視個人資料
回覆: 編譯 kernel
« 回覆 #1 於: 2009-04-03 10:33 »
Sapere aude! Habe Mut, dich deines eigenen Verstandes zu bedienen! ist also der Wahlspruch der Aufklärung.

shihyu

  • 活潑的大學生
  • ***
  • 文章數: 223
    • 檢視個人資料
回覆: 編譯 kernel
« 回覆 #2 於: 2009-04-03 11:48 »
我有先裝toolchain ~ 我在檢查一下好了@@

fillano

  • 鑽研的研究生
  • *****
  • 文章數: 526
    • 檢視個人資料
回覆: 編譯 kernel
« 回覆 #3 於: 2009-04-03 12:04 »
應該是搜尋路徑沒有設好啦,你打一下`arm-linux-uclibc-gcc`看看會不會執行?
Sapere aude! Habe Mut, dich deines eigenen Verstandes zu bedienen! ist also der Wahlspruch der Aufklärung.

andrew

  • 實習板主
  • 懷疑的國中生
  • **
  • 文章數: 69
    • 檢視個人資料
回覆: 編譯 kernel
« 回覆 #4 於: 2009-04-03 14:51 »
我有先裝toolchain ~ 我在檢查一下好了@@

你  echo $PATH 看看, 路徑應該包含你的 toolchain 才對!
find /my_brain type sleepy -exec rm -rf {} \;

shihyu

  • 活潑的大學生
  • ***
  • 文章數: 223
    • 檢視個人資料
回覆: 編譯 kernel
« 回覆 #5 於: 2009-04-03 19:05 »
export PATH=<buildroot>/build_arm/staging_dir/usr/bin:$PATH

果然是路徑問題

不過我之前有加過@@  還好重新登入路徑就又不見了





ansspend

  • 可愛的小學生
  • *
  • 文章數: 10
    • 檢視個人資料
回覆: 編譯 kernel
« 回覆 #6 於: 2009-04-05 01:18 »
噗滋!~
看到你這個情形就好像半個月前的我一樣,因該也是對Linux懵懵懂懂的情況下,就跳下來玩製作系統了
export PATH=<buildroot>/build_arm/staging_dir/usr/bin:$PATH
這個是每次登錄要打的,不見很正常,
我現在都是到Makefile 直接給他路徑
我就舉個例子,我的核心是Linux 2.6.20
#cd Linux 2.6.20
[linux 2.6.20] #vi Makefile ←可以直接到個資料夾直接打開這個檔案,這樣比較好找到等一下要講的兩個英文字
ARCH =?  ←就是要找這兩個,原本是這樣
CROSS_COMPILE = ? ←就是要找這兩個,原本是這樣

修改成
ARCH =arm
CROSS_COMPILE = /opt/crosstool/gcc-3.4.1-glibc-2.3.3/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu-  ←就是輸入絕對路徑,你們的可能跟我的不太一樣,必須自行去找一下,但是都是在bin/

修改完之後
在終端機上打
[linux 2.6.20] # make mrproper
[linux 2.6.20] # make clean

接下來
就是修改ARM的console 與 root參數
[linux 2.6.20] # vi arch/arm/configs/s3c2410_defconfig
把CONFIG_CMDLINE 修改成跟你arm板的U-BOOT裡面因該有一段 bootargs = [參數] ,console 與 root必須一樣
我的bootargs是這樣你可以參考一下
bootargs root=/dev/ram0 rw console=ttySAC0,115200 mem=64M ramdisk=32768
所以我的參數就這樣修改
CONFIG_CMDLINE="root=/dev/ram0 ro init=/bin/bash console=ttySAC0"
修改完之後,存檔
到終端機上

[linux 2.6.20] # make s3c2410_defconfig

#這個是放在這個地方/linux-2.6.20.4/arch/arm/configs 可以自己去看一下,是一個以經幫你定義好可以使用的設定檔
接下來就是,進入到核心理面,把這個定義檔存檔起來

[linux 2.6.20] # make menuconfig

選到最下面 選擇 "存檔" 之後在 選擇"離開"

最後的步驟就是編譯了

[linux 2.6.20] # make uImage 或是 make zImage 或是 make Image 這個部份就是要看你買的那塊板子有沒有送你什麼光碟,我在猜想因垓是每家的都不一樣吧

如果你問我的話,我是用uImage ,我是去這邊下載mkimage   <http://www.jk2410.org/opensource/mkimage>
之後把它放置到/Linux 2.6.20的資料夾裡面 與 /bin
接下來修改 scripts/mkuboot.sh
[linux 2.6.20] # scripts/mkuboot.sh
將MKIMAGE=$(type -path "${CROSS_COMPILE}mkimage")
修改為
MKIMAGE=$PWD/mkimage
存檔
最後
[linux 2.6.20] # make uImage

你可以在 linux-2.6.14/arch/arm/boot/ 目錄下看到我們需要的uImage檔。這就是經過壓縮的內核鏡像檔,把它下載到目標板上的 flash 中即可運行。

至於系統你可以參考這個網站,他寫的蠻詳細的,還有用顏色與格子幫你區分好了。
http://ccoolloorr.blogspot.com/2008/05/filesystem.html
« 上次編輯: 2009-09-23 08:12 由 andrew »