编译uClinux时出错,请大家帮忙
make时显示:*** 2.4 kernels no longer build correctly with old versions of binutils.
*** Please upgrade your binutils to 2.9.5.
我用的是从uclinux.org下的arm-elf-tools-20030314.sh
uClinux-dist-2006-08-03.tar.bz2
make menuconfig和make dep都没有问题。
请问这个binutils的版本是指交叉编译环境的版本吧,怎么升级呢?
我后来又下了arm-elf-tools-20040427.sh,安装后还是同样的问题?
多谢! 上面的问题解决了,修改./vendor/config/armnommu/config.arch 中的$CROSS这个变量为正确的交叉编译器的前缀,make时出现如下问题:
entry-armv.S: Assembler messages:
entry-armv.S:1431: Warning: destination register same as write-back base
entry-armv.S:1654: Error: internal_relocation (type: OFFSET_IMM) not fixed up
entry-armv.S:1707: Error: internal_relocation (type: OFFSET_IMM) not fixed up
entry-armv.S:1708: Error: internal_relocation (type: OFFSET_IMM) not fixed up
entry-armv.S:1998: Error: cannot represent SWI relocation in this object file format
make: *** Error 1
make: Leaving directory `/home/zhangliang/tool/embedded/uClinux-dist/linux-2.4.x/arch/armnommu/kernel'
make: *** Error 2
make: Leaving directory `/home/zhangliang/tool/embedded/uClinux-dist/linux-2.4.x'
make: *** Error 1
请指点一下怎么解决? 终于编译成功了,本来打算要放弃的!
上面的问题还是toolchain没选对,我原来下的源码包是uclinxu.org上的uclinux-dist-20060803
这个源码包的$CROSS_COMPILE变量和以前的源码包都不一样了,它的是arm-linux-
所以make是提示第一页我写的错误,是因为找不到arm-linux-gcc,而不是binutils的版本问题,uclinux.org上的arm-elf-tools-20030314的binutils已经是2.10的了,所以应该改$CROSS_COMPILE。
CROSS_COMPILE变量,我总共知道2处定义
1.uClinux-dist/vendor/config/armnommu/config.arch
2.uClinxu-dist/linux-2.x.x/MakeFile
我只改了第一出,所以没编译出来,换了个gcc3.4.0的toolchain,也没有成功,在极度郁闷的情况下我就再没试,而是又到uclinux.org去下了个uclinux-dist-20051110的源码包。
这个版本不用改$CROSS_COMPILE,我用uclinux.org上的arm-elf-tools-20030314
make时就发生的第2楼的问题,我又试了arm-elf-tools-20040305的toolchain,还是一样失败。于是我在绝望的情况下又试了arm-elf-tools-20040427,奇迹发生了,我竟然编译成功了,在skyeye上跑了一下,也没问题。
其中后2个toolchain在http://opensrc.sec.samsung.com/download.html上有下载。
希望我的失败经验对大家有帮助,别像我郁闷了2天,把星期6,日都浪费了。
还有以上3个.sh的toolchain在fc5下都需要用vi,emacs(gedit好像不行)打开,在tail后添加 +n
才可以运行 sudo ln -s /usr/local/bin/arm-elf-gcc/usr/local/bin/arm-linux-gcc,如此做则make dep能通过。其他去我就不知道
页:
[1]