Hi3531調試記錄-編譯

今天開始嘗試編譯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


至此:編譯內核成功


未完待續。。。。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章