crosstool是由美国人Dan kegel(毕业于加(利福尼亚)州工大学)开发的一套可以自动编译不同匹配版本gcc和glibc。
下载地址
http://kegel.com/crosstool/crosstool-0.43
在http://kegel.com/crosstool/crosstool-0.43/buildlogs 可以看到各种CPU和GCC+Glibc版本,那些已经编译成功,那些部分成功,那些彻底失败。
安装详细步骤
1、切换用户,crosstool出于安全考虑不允许在root用户下安装。
2、安装工具包,不过这步不做后面安装时,会自动连接网络下载安装。
制作之前要安装的工具包:
1)bison,是一个通用的解析器生成器,可以转换成一个LALR(1)或该语法的GLR分析器的注释上下文无关文法。一旦你精通了Bison,你可以用它来开发从简单的桌面计算器到复杂的编程语言的一个广泛的语言解析器。
2)flex,语法词法分析器生成器(Flex) 是相对于 Lex 可选择的一个自由软件。Flex 对产生评估系统是一个工具:在文本中识别词汇式样的程序。Flex 阅读给定的输入文件,如果没有文件名给定就阅读它的标准输入,针对评估系统产生的一个描述。
3)build-essential
3、降低Gcc版本,目前用的高版本的Gcc语法要求比较高,编译会出错,所以要降低Gcc的版本,建议选用Gcc-4.1.1
4、修改sh版本,sudo dpkg-reconfigure dash,选择no,以删除dash。因为之后要运行脚本。
5、创建安装路径和工具链的存放目录。
6、解压下载的crosstool工具
7、修改要运行的sh,解压目录下会有许多针对特定处理器的sh,修改需要的sh
vim *****.sh, *****为所需的cpu
TARBALLS_DIR=自定义的安装路径
RESULT_TOP=生成工具链的存放目录
8、修改gcc-*-glibc-*.bat, *为版本号
修改内容:
BINUTILS_DIR=binutils-2.15
GCC_DIR=gcc-3.4.5
GLIBC_DIR=glibc-2.3.6
LINUX_DIR=linux-2.6.22.6
LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0
GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.6
以上版本是根据需要自行修改
9、执行前面修改的.sh文件,这个需要较长的时间,在不需要下载的情况下,需要半小时左右。耐心等待
10、安装完成后,修改环境变量
sudo vim /etc/bash.bashrc
export
PATH=$PATH:安装路径/../bin
11、运行命令 ****gcc -v
如果显示安装版本正确,则说明安装成功
12、修改回sh,gcc版本。
另外,在运行脚本时,如果报出:These critical programs are missing or too old
则如下修改:
源码包里的
glibc中的,,configure文件
可以看到,,
case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
2.1[3-9]*) 《--------------------------------------------3920行
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
2.[1-2][0-9]*) 《--------------------------------------------3920行
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
还有3981行也有这样的代码。。 。
一个是ld ,,,一个是ar 这样所有的问题就不是问题了,,,,
重新运行,,,可以解决了。。。。