免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 951 | 回复: 0
打印 上一主题 下一主题

安装交叉编译工具的时候会出的错误 [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-20 09:44 |只看该作者 |倒序浏览

前提:自带的是gcc-4.4.1无法用crosstool正常编译交叉编译器,所以必须安装gcc-4.1,但是不必卸载4.4.1。方法是::
1. 先安装gcc-4.1,sudo apt-get gcc-4.1
2. sudo rm /usr/bin/gcc          
3.sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc      
(建立GCC到gcc-4.1的软连接)

Ubuntu 9.10编译交叉编译工具时会出现下面的错误:
These critical programs are missing or too old: as ld
错误分析:
通过字面分析可知,重要的程序丢失,或者,版本太老,具体的程序名字为:as ld,很多朋友遇到这儿的时候会很郁闷,版本太老???我们的9.10已经是比较新的系统了,怎么可能还老呢,crosstool工具到现在还是 0.43,其最后更新时间不超过2008年,这是怎么回事呢?
我们先来看下as ld的版本:
sudo as -v
GNU assembler version 2.20 (i486-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.20
sudo ld -v
GNU ld (GNU Binutils for Ubuntu) 2.20
从上面的信息可知,两个版本都是2.20, 在看下.dat文件里的要求的各版本信息:
BINUTILS_DIR=binutils-2.16.1
GCC_CORE_DIR=gcc-3.3.6
GCC_DIR=gcc-4.1.1
GLIBC_DIR=glibc-2.3.6
LINUX_DIR=linux-2.6.15.4
LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0
GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.6
GDB_DIR=gdb-6.5
从上面可知,binutils的版本(as ld 二者都在binutils包里)要求为2.16.1,可见我们的程序版本要高的。

分析下出错的脚本位置:
cd ./build/arm-linux/gcc-3.4.5-glibc-2.3.6/glibc-2.3.6$ (有人可能会问,你怎么知道是在这儿的呢)
方法很简单:     1. 用grep      2. 通过分析脚本信息得出
在第3920行左右:
ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
2.1[3-9]*)
其大概意思就是,判断当前das程序的版本信息,如果其版本不是2.13~2.19版本之间的版本,就出错。
第3981行,同样的道理:
ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
2.1[3-9]*)
我们将其改为
ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
2.2[0-9]*)
然后保存退出,这样的话还有一个问题,all.sh会每次都去解压glibc的包,会将修改的内容覆盖掉掉,因此还要修改all.sh脚本:
在第110行左右,将下面的内容注释掉:
if test "$opt_no_unpack" = ""; then
if test "$opt_builduserland" = "1"; then
# Ah, nobody would want to change this :-)
PTXDIST_DIR=ptxdist-testing-20031113
export PTXDIST_DIR
fi
# Download and patch
if test -d "$BUILD_DIR"; then
# Remove in background
mv $BUILD_DIR $BUILD_DIR.del.$$
rm -rf $BUILD_DIR.del.$$ &
fi
mkdir -p $BUILD_DIR
sh getandpatch.sh
fi
然后在编译:
./demo-arm-softfloat.sh
大概要等1个小时左右时间,就能看到echo Done了。

说明:这种做法比较危险,因为不知道as ld两个不同版本程序之间的区别,我简单测试了下arm-linux-gcc是没有问题的,但是不知道会不会有其它影响。

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP