• Ubuntu 12.04 64bit GCC交叉编译器制作 原创



                                                                                                                                
            做嵌入式开发少不了跨平台操作。因此也少不了使用交叉编译器。我们能够自己动手制作属于我们自己的交叉编译器。当中能够定制一些东西,能够使之支持浮点运算等特殊要求。

    下面以适合嵌入式开发最经常使用的ARM平台的ARMGCC交叉编译器为例进行解说:其它平台步骤和方法一样。仅仅需在平台选择的时候作对应更改就可以。 准备工作: 

         1.下载制作交叉编译环境的工具:crosstool(crosstool-0.43.tar.gz)       使用命令行下载 

         wget  http://www.kegel.com/crosstool/crosstool-0.43.tar.gz      

       2.下载编译过程须要用到的源码:         

               binutils-2.15.tar.bz2        

             gcc-3.4.5.tar.bz2         

             glibc-2.3.6.tar.bz2 

             glibc-linuxthreads-2.3.6.tar.bz2      

              linux-2.6.8.tar.bz2 

             linux-libc-headers-2.6.12.0.tar.bz2 
         说明:详细版本能够有一些不同,后面说讲怎样设置。 
             以上七个软件建议放在同一文件夹下,如~/linux/downloads 文件夹下。

     

         3.编译过程须要用到下面几个软件。系统本身没有安装,能够执行安装命令提前做好,由于编译一次至少要花半个小时,假设由于依赖软件没有安装中途会报错退出,仅仅有从头再来,那样非常浪费时间的。

     

         sudo apt-get install bison flex build-essential patch libncurses5-dev 

          详细工作步骤:    

          1、改动系统配置 

          1.1 将GCC版本号设置为4.1 

          Ubuntu 12.04  64bit 默认安装的 gcc 版本号为4.6,这个版本号对于语法要求较高。编译会出错,眼下不宜选用,于是选择了gcc-4.1,但并不须要卸载gcc-4.6。 

               sudo apt-get install gcc-4.1 (眼下新的都无法直接安装。须要自己下载gcc-4.1 手动安装,请參见Ubuntu 12.04 64bit 下安装编译GCC 4.1.2 绝对原创)

             sudo rm /usr/bin/gcc (删除GCC。它仅仅是个到gcc-4.6的软链接文件)   

             sudo ln -s /usr/bin/gcc-4.1  /usr/bin/gcc (建立GCC到gcc-4.1的软链接)      

         1.2 改动sh版本号      

          假设执行       ls -la /bin/sh 
          看到链接的是 dash ,则请执行下面命令     

          sudo dpkg-reconfigure dash      

          选择 no 以删除 dash  此处假设不改好的话,编译时会出现错误

     2.解压软件包。并进入该文件夹。查看重要的脚本文件。

         $cd downloads  
         $tar –zxvf crosstool-0.43.tar.gz 

         $cd crosstool-0.43 
        在此文件夹下能够看到有非常多.sh脚本和.dat配置文件。每个支持的处理器都有它所对应的脚本。

    假如选用demo-arm- softfloat.sh 就是建立目标为支持软浮点的arm交叉编译工具链。  


    3.改动demo-arm-softfloat.sh $vim demo-arm-softfloat.sh 

    改动以下两句 
    TARBALLS_DIR=$HOME/downloads //表示下载的源代码的存放文件夹 

    RESULT_TOP=/opt/crosstools //表示生成的工具链的存放文件夹 

    为: 
    TARBALLS_DIR=/home/linux/downloads(源代码存放文件夹) 

     RESULT_TOP=/home/linux/crosstools(生成工具链文件夹) 
    4.改动 gcc-3.4.5-glibc-2.3.6.dat $ vim gcc-3.4.5-glibc-2.3.6.dat 改动内容为: 
        BINUTILS_DIR=binutils-2.15 

       GCC_DIR=gcc-3.4.5 

       GLIBC_DIR=glibc-2.3.6 

       LINUX_DIR=linux-2.6.8 

      LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0

      GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.6

     5 $ ./ demo-arm-softfloat.sh  这个过程较长(半个小时左右)

    6. 改动环境变量 
        直接改动/home/linux/.bashrc cd /home/linux

         vim .bashrc 在最后面加入例如以下内容: 

         PATH=$PATH:/home/linux/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin

         然后 source .bashrc 

     7.运行例如以下命令 
    $ arm-softfloat-linux-gnu-gcc -v 

       显示 
    Reading specs from /home/david/project/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/lib/gcc/arm-softfloat-linux-gnu/3.4.5/specs  
    Configured with: /home/david/downloads/crosstool-0.43/build/arm-softfloat-linux-gnu/gcc-3.4.5-glibc-2.3.6/gcc-3.4.5/configure --target=arm-softfloat-linux-gnu --host=i686-host_pc-linux-gnu --prefix=/home/david/project/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu --with-float=soft --with-headers=/home/david/project/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/arm-softfloat-linux-gnu/include --with-local-prefix=/home/david/project/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/arm-softfloat-linux-gnu --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c,c++ --enable-shared --enable-c99 --enable-long-long 
      hread model: posix gcc version 3.4.5 
     ok交叉编译环境创建成功。


    8.恢复我们改动的系统配置:

     恢复gcc为4.6

      sudo rm /usr/bin/gcc  

     sudo ln -s /usr/bin/gcc-4.6  /usr/bin/gcc

     又一次安装dash 

     sudo dpkg-reconfigure dash 

     选择 yes 以又一次安装 dash

    注意:

     1.UBUNTU12.04 上工具链的编译运行./demo-arm-softflaot.sh过程中会出现以下的错误:编译过程中会出现:
    *** "These critical programs are missing or too old" as ld
    解决方法例如以下:


    改动以下的文件:
    vi ./build/arm-softfloat-linux-gnu/gcc-3.4.5-glibc-2.3.6/glibc-2.3.6/configure   (就是把4425行的{ (exit 1); exit 1; };屏蔽掉,由于binuilts版本号过低会造成异常退出

    4419 test -n "$critic_missing" && { { echo "$as_me:$LINENO: error:
    4420 *** These critical programs are missing or too old:$critic_missing
    4421 *** Check the INSTALL file for required versions." >&5
    4422 echo "$as_me: error:
    i

    4423 *** These critical programs are missing or too old:$critic_missing
    4424 *** Check the INSTALL file for required versions." >&2;}
    { (exit 1); exit 1; };}
    改为:
    4419 test -n "$critic_missing" && { { echo "$as_me:$LINENO: error:
    4420 *** These critical programs are missing or too old:$critic_missing
    4421 *** Check the INSTALL file for required versions." >&5
    4422 echo "$as_me: error:
    4423 *** These critical programs are missing or too old:$critic_missing
    4424 *** Check the INSTALL file for required versions." >&2;}
    #{ (exit 1); exit 1; };
    }
    在再次运行./demo-arm-softfloat.sh前,请在eval `cat arm-softfloat.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh --notest  末尾处加--nounpack表示不又一次解压安装包,目的是让安装过程继续进行,而不覆盖掉该configure问题以及曾经的编译结果
    再次运行:
    ./demo-arm-softfloat.sh









































  • 相关阅读:
    OkHttp的基本使用方法
    C#中Dictionary小记
    SQL Server表的数据量大小查询
    基于.NET平台常用的框架整理
    JQuery中ajax的相关方法总结
    JQuery中的工具函数总结
    Asp.net MVC 中Controller返回值类型ActionResult
    Plupload文件上传组件使用API
    HTTP 方法:GET 对比 POST
    C#使用简单邮件传输协议(SMTP)发送邮件
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7040360.html
Copyright © 2020-2023  润新知