今天開始嘗試編譯osdrv文件夾裏的內容
-----------------------------------------------------------//這是分割線
編譯內核:
進入kernel文件夾,發現內核文件並沒有解壓
先進行內核文件解壓 tar zxvf linux-3.0.y.tgz
進入內核源代碼目錄後,執行以下操作
cp arch/arm/configs/godnet_defconfig .config
sudo make ARCH=arm CROSS_COMPILE=arm-hisiv200-linux- menuconfig 報錯!
缺少ncurses lib 趕緊用apt-get install ncurses-dev //注意 不是ncurses-devel 會提示找不到此軟件
安裝好繼續
sudo make ARCH=arm CROSS_COMPILE=arm-hisiv200-linux- menuconfig
正常通過
sudo make ARCH=arm CROSS_COMPILE=arm-hisiv200-linux- uImage 報錯!!
較爲奇怪,爲什麼osdrv文件夾裏面都是一些壓縮包,我懷疑要先make整個osdrv文件夾
暫停繼續調研,轉爲先編譯整個文件夾
-------------------------------------------------------------------------------------------------------
sudo make OSDRV_CROSS=arm-hisiv200-linux clean 腳本跑了一段時間後報錯!!!
解決方案:
# mv /bin/sh /bin/sh-mod
# ln -s /bin/bash /bin/sh
sudo make OSDRV_CROSS=arm-hisiv200-linux clean 成功。
sudo make OSDRV_CROSS=arm-hisiv200-linux all 失敗 提示找不到arm-hisiv200-linux-gcc 命令
原因是沒有使用root權限,導致調用的其他MakeFile文件權限不對,
sudo -i 切換到root權限,再次編譯成功
因爲整體編譯文件時依然報錯,又轉爲測試單獨編譯的效果
-----------------------------------------------------------------------------------------
單獨編譯內核遇到兩個問題:
1、Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373.
/opt/ARM/mini6410/linux/linux-2.6.38/kernel/Makefile:140: recipe for target 'kernel/timeconst.h' failed
make[1]: *** [kernel/timeconst.h] Error 255
Makefile:916: recipe for target 'kernel' failed
make: *** [kernel] Error 2
解決對策:
刪除
@val = @{$canned_values{$hz}};
if (!defined(@val)) {
@val = compute_values($hz);
}
output前面加入
$cv = $canned_values{$hz};
@val = defined($cv) ? @$cv : compute_values($hz);
2、找不到mkimage 命令
解決對策: cp uboot/tools/mkimage /usr/bin
至此:編譯內核成功
未完待續。。。。