Ubuntu安装crosstool These critical programs are missing or too old: as ld错误

前提:自带的是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是没有问题的,但是不知道会不会有其它影响。

“make”、“bison”、“compiler”是常用于编程开发的软件程序,其中“make”是GNU自由软件工具中的一个构建自动化工具,它根据Makefile文件中的规则来自动生成目标文件;“bison”是一种语法解析器生成器,能够根据用户提供的语法描述文件自动生成相应的解析器;而“compiler”则是一种将高级语言代码转换为机器码的程序。 当系统在编译或开发过程中提示“these critical programs are missing or too old: make bison compiler”时,意味着当前系统中缺少或版本过旧的这三个关键程序之一。这通常会导致编译无法进行、程序无法正常运行、开发环境无法搭建等问题。 针对这种情况,一般需要使用相应的软件包管理器或手动安装最新版本的程序。例如,在Ubuntu系统中,我们可以使用如下命令安装: sudo apt-get install make sudo apt-get install bison sudo apt-get install build-essential 如果系统提示已有最新版本,则可以尝试使用如下命令更新版本: sudo apt-get update sudo apt-get upgrade 请注意,在安装或更新这三个关键程序时,需要遵循相应的安装步骤和软件包依赖。如果不确定如何安装或更新这些程序,建议查阅相关资料或寻求专业技术支持。 总之,对于程序开发工程师而言,保持系统中关键程序的更新和完整性是非常重要的,只有这样才能保证系统和程序处于一个稳定、高效的开发环境中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值