今天开始尝试编译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 脚本跑了一段时间后报错!!!
解决方案:
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
至此:编译内核成功
未完待续。。。。