Ubuntu安装crosstool These critical programs are missing or too old: as ld错误
2011-06-21 23:40
483 查看
前提:自带的是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是没有问题的,但是不知道会不会有其它影响。
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是没有问题的,但是不知道会不会有其它影响。
相关文章推荐
- Ubuntu 10.04 安装crosstool These critical programs are missing or too old: as ld错误
- 【转】crosstool These critical programs are missing or too old: as ld 问题
- 关于编译glibc-2.9的These critical programs are missing or too old: as ld 错误
- These critical programs are missing or too old: as ld
- these critical programs are missing or too old
- One or more layouts are missing the layout_width or layout_height attributes 错误
- ubuntu安装程序时遇到错误 you might want to run 'apt-get -f install' to correct these
- Ubuntu14.04 64bit编译u-boot-2016.07提示 Your dtc is too old, please upgrade to dtc 1.4 or newer。
- 关于错误 The type or namespace name `Vuforia' could not be found. Are you missing an assembly reference?
- ubuntu 错误:E: Some index files failed to download. They have been ignored, or old ones used instead.
- 在Ubuntu安装完成后更改默认的语言LANG,出现Cannot set LC_CTYPE to default locale: No such file or directory错误的解决办法
- ubuntu安装jdk7,eclipse,cross tool(arm)
- 在Ubuntu安装完成后更改默认的语言LANG,出现Cannot set LC_CTYPE to default locale: No such file or directory错误的解决办法
- 在Ubuntu安装完成后更改默认的语言LANG,出现Cannot set LC_CTYPE to default locale: No such file or directory错误的解决办法
- 在Ubuntu16.04里面安装 pycurl 提示错误的问题:gnutls.h: No such file or directory 的解决方案
- ubuntu更新时出现错误 E: Some index files failed to download, they have been ignored, or old ones used inst
- ubuntu使用”apt-get install“安装程序时遇到错误提示: you might want to run 'apt-get -f install' to correct these
- 在ubuntu更新时,出现错误E: Some index files failed to download, they have been ignored, or old ones used inst
- Ubuntu10.04安装配置笔记-使用crosstool建立交叉编译器
- ubuntu 16.04 安装cuda 8 出现的错误:Missing recommended library: libGLU.so;Missing recommended library: libX