fedora10下安装交叉编译器

由于fedora10自身gcc版本是4.3.0以上版本,在安装我们需要的gcc交叉编译器时出现了不少问题,主要是因为新版本的linux系统下的gcc版本太高,而用crosstool安装时却一直提醒版本too old,其实不是太老,而是太新以至于成人crosstool不识别,本人是linux菜鸟,现在刚开始接触,防止以后遗忘,特做此笔记。

1.1.准备工作。下载需要的lib工具包所示:
    binutils-2.16.1.tar.bz2
    gdb-6.5.tar.bz2
    glibc-2.3.2.tar.bz2
    crosstool-0.43.tar.gz
    glibc-linuxthreads-2.3.2.tar.bz2   
    linux-2.6.15.4.tar.bz2
    gcc-4.1.0.tar.bz2

    gcc-3.3.6.tar.bz2       
    linux-libc-headers-2.6.12.0.tar.bz2
  完以后在放在自己喜欢的位置。本人在/home/zcs/downloads 文件目录,以下以此目录为例。到此位置准备工作已经完成。
  2.$cd /home/zcs/downloads           //进入downloads
  3.$tar -xzvf crosstool-0.43.tar.gz  //解压crosstool
  4.$vim arm.sh    //修改arm.sh
set -ex
TARBALLS_DIR=$HOME/downloads
RESULT_TOP=/opt/crosstool
export TARBALLS_DIR RESULT_TOP
GCC_LANGUAGES="c,c++"
export GCC_LANGUAGES
 
# Really, you should do the mkdir before running this,
# and chown /opt/crosstool to yourself so you don't need to run as root.
mkdir -p $RESULT_TOP
 
#eval `cat arm9tdmi.dat gcc-3.2.3-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.2.3-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.2.3-glibc-2.3.2-tls.dat` sh all.sh --notest#eval `cat arm9tdmi.dat gcc-3.3.6-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.3.6-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.3.6-glibc-2.3.2-tls.dat` sh all.sh --notest#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.2-tls.dat` sh all.sh --notest#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.5.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.5-tls.dat` sh all.sh --notest#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.6-tls.dat` sh all.sh --notest#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.2-tls.dat` sh all.sh --notest#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.5.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.5-tls.dat` sh all.sh --notest#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.6.dat` sh all.sh --notest
#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.6-tls.dat` sh all.sh --notest#eval `cat arm9tdmi.dat gcc-4.1.0-glibc-2.3.2.dat` sh all.sh --notest
eval `cat arm9tdmi.dat gcc-4.1.0-glibc-2.3.2-tls.dat` sh all.sh --notest
 
echo Done.
   主要修改第三行,编译出来的工具链目录,本人放在RESULT_TOP=$HOME/crosstool。否则编译时会提醒权限不够,其他不用修改。
   第五行有必要解释一下,标示编译的工具链将支持什么语言。可以自行添加,本人用c,c++编程,所以不需要修改。如果需要java,可以添加上去,编译的时候,如果提前没有下载相应的java包,crosstool会自动下载,不过下载速度比较慢。这也我们为什么提前要把编译的工具包提前下载。你可以在第一步的准备工作不需要做,直接就下载一个crosstool工具,解压,开始编译,编译的过程估计需要一,两天,如果网速慢的.
   最后一行就是最终编译出来的工具链的版本。#开到头的为注释。 你可以编译多种版本的工具链,只要取消对应前面的#。
  5.$vim arm.dat   //看看上一步最后一行,用到哪个dat文件。 arm.dat 和gcc-4.10-glibc-2.3.2-tls.dat 修改。
KERNELCONFIG=`pwd`/arm.config
TARGET=arm-unkonwn-linux-gnu
TARGET_CFLAGS="-O"
    第二行解释,编译出来的工具链的 编译c,或者c++文件的命令标示,可以修改,也可以不修改。一般修改为arm-linux。
    第三行,标示全面优化参数,不用修改。
  6.$vim gcc-4.10-glibc-2.3.2-tls.dat  //gcc-4.10-glibc-2.3.2-tls.dat 一般不修改默认就可以了。这里显示标示工具链编译所需要的的包文件版本。

  7.现在问题出现了,如果直接执行第8步,就会提醒gcc版本too old了,因为默认的gcc是4.3.0,所以我们来下载安装gcc-4.1.0。在download里解压:$tar -xjvf gcc-4.1.0.tar.bz2.然后配置:$./configure 然后再编译:$make 问题又出现了:

 make   时出现的问题    
  WARNING:   `makeinfo'   is   missing   on   your   system.     You   should   only   need   it   if  
                    you   modified   a   `.texi'   or   `.texinfo'   file,   or   any   other   file  
                    indirectly   affecting   the   aspect   of   the   manual.     The   spurious  
                    call   might   also   be   the   consequence   of   using   a   buggy   `make'   (AIX,  
                    DU,   IRIX).     You   might   want   to   install   the   `Texinfo'   package   or  
                    the   `GNU   make'   package.     Grab   either   from   any   GNU   archive   site.  
  make[3]:   ***   [fastjar.info]   错误   1  
  make[3]:   Leaving   directory   `/root/mars/software/gcc/fastjar'  
  make[2]:   ***   [all]   错误   2  
  make[2]:   Leaving   directory   `/root/mars/software/gcc/fastjar'  
  make[1]:   ***   [all-fastjar]   错误   2  
  make[1]:   Leaving   directory   `/root/mars/software/gcc'   
  make:   ***   [all]   错误   2   

 

解决办法:需要安装textinfo,原因是与系统内的textinfo不匹配,下载一个texinfo-4.9.tar.bz2安装上:解压$tar -xjvf texinfo-4.9.tar.bz2 进入文件$cd texinfo-4.9  配置$./congigure 编译$make 链接$make install。然后在重新回到gcc-4.1.0后,在执行$make  $make install.至此gcc编译成功。(期间如果提示权限不够的话,就用$su命令进入根用户执行)。现在用命令 $gcc -v就可以看到现在的gcc版本了。
  8.下面再转到crosstool-0.43里面继续执行。$./arm.sh   //执行shell文件gcc。开始编译,如果所有包都是提前下载的,静静等待就可以了。

  9.$export PATH=/home/zcs/crosstool/gcc-4.1.0-glibc-2.3.2/arm-linux/bin:$PATH //设置环境变量进行测试编译好的工具链是否满意。
  10.$vim hello.c //int main(){printf("hello");return 0;}
  11.$arm-linux-gcc -o hello hello.c //编译hello.c文件,编译出来的hello为二进制文件。
  12.$./hello //运行报错,别急,正确。原因是二进制文件不能直接在pc机上运行。通过samba服务把文件传到板子上试试,显示hello,恭喜你,成功;如果现在pc机上运行程序,请看下面
  13.$gcc -o hello hello.c //编译出来的hello可以在pc运行了,显示hello。
                             交叉编译工具链制作完成。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值