zoukankan      html  css  js  c++  java
  • rtems的GNU(GCC)编译环境配置

    // 创建目录

    /home/shael/rtems/build   //存放解压包和编译包目录

    /home/shael/rtems/archive   //存放源码包目录

    /home/shael/rtems/tools   //存放编译的交叉包目录

    /home/shael/rtems/src //存放rtems源码



    // 下载ftp://ftp.rtems.com/pub/rtems/SOURCES/4.10/
    gcc-4.3.2.tar.bz2
    gcc-4.3.2-20080910.diff
    binutils-2.20.tar.bz2
    newlib-1.18.0.tar.gz
    newlib-1.18.0-rtems4.10-20130320.diff
    rtems-4.10.2.tar.bz2


    // 修改参数
    在build文件夹下新建set-rtems.sh文件,输入一下内容(这里的shael根据实际情况更改,arm-rtems4.10也要根据平台修改)
    #! /bin/sh
    export PRJECT=rtems
    export PRJROOT=/home/shael/${PRJECT}
    export TARGET=arm-rtems4.10
    export PREFIX=${PRJROOT}/tools/rtems-4.10
    export TARGET_PREFIX=${PREFIX}/${TARGET}
    export PATH=${PREFIX}/bin:${PATH}
    pwd
    cd $PRJROOT
    $cd build
    $chmod +x  ./set-rtems.sh
    备注:给set-rtems.sh加上可执行权限需要用到root权限。
    $source  ./set-rtems.sh
    备注:该命令使得set-rtems.sh中的环境变量在当前shell中可见,也可以使用
    $. ./set-rtems.sh  
    注意:两个点之间至少要有一个空格


    // 编译安装binutils
    $cd build
    $tar xvf ../archive/binutils-2.20.tar.bz2
    $mkdir b-binutils
    $cd b-binutils
    $../binutils-2.20/configure --target=$TARGET --prefix=$PREFIX --disable-werror
    $make
    $make install
    ***********************************************************************
    错误1:
    // 注意有可能遇到以下错误,安装texinfo
    // make[2]: *** [info-recursive] 错误 1

    错误2(提示变量被设定但未被使用):

    ../../binutils-2.20.1/bfd/compress.c: 在函数‘bfd_uncompress_section_contents’中:
    ../../binutils-2.20.1/bfd/compress.c:54:45: 错误: 形参‘buffer’被设定但未被使用 [-Werror=unused-but-set-parameter]
    ../../binutils-2.20.1/bfd/compress.c:54:68: 错误: 形参‘size’被设定但未被使用 [-Werror=unused-but-set-parameter]
    cc1: all warnings being treated as errors
    make[4]: *** [compress.lo] 错误 1
    make[4]:正在离开目录 `/home/rtems/tools/build-binutils/bfd'
    make[3]: *** [all-recursive] 错误 1
    make[3]:正在离开目录 `/home/rtems/tools/build-binutils/bfd'
    make[2]: *** [all] 错误 2
    make[2]:正在离开目录 `/home/rtems/tools/build-binutils/bfd'
    make[1]: *** [all-bfd] 错误 2
    make[1]:正在离开目录 `/home/rtems/tools/build-binutils'
    make: *** [all] 错误 2
    解决方法:$../binutils-2.20/configure --target=$TARGET --prefix=$PREFIX --disable-werror
    ***********************************************************************


    // 编译安装gcc
    $cd build
    $tar xvf ../archive/gcc-4.3.2.tar.bz2
    $cd gcc-4.3.2
    $patch -p1 <../../archive/gcc-4.3.2-20080910.diff  //应用补丁
    $find . -name "*.rej" -print                       //如果没有扩展名为.rej的文件,说明补丁应用成功
    $cd build
    $tar xvf ../archive/newlib-1.18.0.tar.gz
    $cd newlib-1.18.0
    $patch -p1 <../../archive/newlib-1.18.0-rtems4.10-20091009.diff  //应用补丁
    $find . -name "*.rej" -print       //如果没有扩展名为.rej的文件,说明补丁应用成功
    $cd gcc- 4.3.2
    $ln -s ../newlib-1.18.0/newlib .
    $mkdir b-gcc
    $cd b-gcc

    $../gcc-4.3.2/configure --target=$TARGET --with-gnu-as --with-gnu-ld --with-newlib --verbose --enable-threads --enable-languages="c,c++" --prefix=$PREFIX 

    在给gcc  “configure”的时候,如果有提示没有找到mpfr,就在configure时加上--with-mpfr=/usr/local/mpfr-2.4.2(路径指向根据自己的安装地址定),同理gmp和mpc 

    $make all
    $make info

    $make install

    !!!!!!!!!!!!!!!!!!!!!!!!!!

    !!!!!!!!!!!!!!!!!!!!!!!!!如果配置gcc的时候出现各种奇葩错误,建议不要费功夫去挣扎了,按步骤重新来一次吧。。。。笔者也经常碰到各种奇葩错误,也挣扎去解决,结果睡一觉按步骤重新来过,就莫名其妙的好了,这样已经不止一次了。。。基本第一次都没成功过。

    不过主要的思想就是分为俩步,第一步:m4、texinfo、gmp、mpfr、mpc安装,第二步binutils、newlib、gcc。记住每次安装第二步时看看gmp、mpfr、mpc的路径是否添加!set-rtems.sh是否运行了一次,以后装好了要用arm-rtems***-gcc也要运行一下set-rtems.sh,而且只能在同一个终端窗口。

    ******************************************************************
    // 注意configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+.
    // 出现这个问题说明电脑上没有这三个,不过在安装这个之前应该确认下有没有安装m4,没有的话得先安装m4(configure之后没有生成makefile的请安装m4.。。)
    // 安装gmp
    $tar xvf gmp-4.3.2.tar.bz2
    $cd gmp-4.3.2
    $./configure --prefix=/usr/local/gmp-4.3.2
    $make
    $make check (这一步用来确保编译正确)
    $sudo make install
    // 安装mpfr
    $tar xvf mpfr-2.4.2.tar.bz2
    $cd mpfr-2.4.2

    $./configure --with-gmp=/usr/local/gmp-4.3.2(此处的路径应该和gmp安装的路径一样)--prefix=/usr/local/mpfr-2.4.2

    $make
    $make check   //笔者在check mpfr的时候是148全部fail了。。。。,mpc也是,后来索性不管了直接make install了
    $sudo make install
    // 安装mpc(后来看到一些文章发现貌似不用装mpc。。。总之怕出错还是装了。。。)
    $tar xvf mpc-0.8.1.tar.gz
    $cd mpc-0.8.1
    $./configure --with-gmp=/usr/local/gmp-4.3.2 --with-mpfr=/usr/local/mpfr-2.4.2(此处的路径应该和gmp、mpfr安装的路径一样)--prefix=/usr/local/mpc-0.8.1
    $make
    // 装好后(注意:这里的配置只是临时的,每次安装gcc的时候先输入echo $LD_LIBRARY_PATH看看是否有下面这三个路径)

    export LD_LIBRARY_PATH=/usr/local/gmp-4.3.2:/usr/local/mpfr-2.4.2:/usr/local/mpc-0.8.1

    在给gcc  “configure”的时候,如果有提示没有找到mpfr,就在configure时加上--with-mpfr=/usr/local/mpfr-2.4.2,同理gmp和mpc 

    ******************************************************************  

  • 相关阅读:
    spring mvc controller间跳转 重定向 传参
    SpringMVC拦截器(资源和权限管理)
    Spring3 MVC 拦截器拦截不到的问题
    使用HandlerInterceptor实现简单的授权
    同一个form里,不管哪个 submit 都是直接提交form表单里的内容
    AJax+springMVC+JQURY.GET--注册界面即时刷新用户名是否存在
    Ajax异步检查用户名是否存在(附Demo下载)
    Ajax注册表单用户名实时验证
    SpringMVC记住密码功能(实例)
    CocoaPods停在Analyzing dependencies解决方案
  • 原文地址:https://www.cnblogs.com/shaellancelot/p/4358873.html
Copyright © 2011-2022 走看看