// 创建目录

/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

rtems的GNU(GCC)编译环境配置的更多相关文章

  1. Linux本地yum源配置以及使用yum源安装gcc编译环境

    本文档是图文安装本地yum源的教程,以安装gcc编译环境为例. 适用范围:所有的cetos,红帽,fedroa版本 适用人群:有一点linux基础的小白 范例系统版本:CentOS Linux rel ...

  2. CentOS离线安装GCC编译环境

    gcc编译环境rpm下载 安装相关的rpm包,具体版本可能随时间变化而变化,可以去以下地址下载: 重庆大学镜像:http://b.mirrors.lanunion.org/CentOS/中国科学技术大 ...

  3. linux内核编译环境配置

    linux内核编译环境配置 如果不是编译内核,只需要安装与内核相匹配的kernel-devel开发包即可.即是/lib/modules/`uname -r`/build -> /usr/src/ ...

  4. Syslinux编译环境配置简要步骤

    由于毕业设计要做一个加密U盘的LINUX,需要修改一sysylinux引导程序,在网上很少有关于syslinux编译环境配置的文章,在此简要总结一下,发出来共享. 需要的软件: 1.  vmware ...

  5. Android编译环境配置

    Android编译环境配置 网上关于Android编译环境配置的整理资料有不少,经整理亲测后,希望能给需要的亲们提供帮助. 主要分为四步: 1.安装JDK(Java Standard Edition ...

  6. RedHat 5下安装gcc编译环境的具体步骤

    RedHat 5下安装gcc编译环境的具体步骤 在RHEL5系统中默认不安装linux系统中的开发编译环境(gcc),此软件包安装时依赖其他包较多 在以前使用RHEL4时可以通过如下命令安装: rpm ...

  7. mac OS(OS X)的OI编译环境配置指南

    编译环境:gdb+Atom 如何安装gdb: http://logic0.blog.163.com/blog/static/1889281462014183271283/   Atom下载地址: ht ...

  8. Android编译环境配置(Ubuntu 14.04)

    常识:编译Android源代码需要在Linux系统环境下进行... 在Linux中,开发Android环境包括以下需求:Git.repo.JDK(现在一般使用OpenJDK)等:其中,Git用于下载源 ...

  9. Berkeley DB (VC6.0 编译环境配置)

    操作系统:winxp VC环境:VC6.0 必需文件:Berkeley DB安装文件(db-.msi) 下载地址:http://www.oracle.com/technology/software/p ...

随机推荐

  1. [图形学] Chp18 OpenGL表面纹理函数

    以2D表面为例展示纹理贴图,用opengl设置一个2D纹理,颜色存储在32*32*3的数组中,对应的纹理坐标为0<=s, t<=1.0. 画出几个正方形表面,分别以GL_CLAMP(纹理坐 ...

  2. javaweb利用filter拦截请求

    项目上有个小需求,要限制访问者的IP,屏蔽未授权的登录请求.该场景使用过滤器来做再合适不过了. SecurityFilter.java: package com.lichmama.webdemo.fi ...

  3. Chrome浏览器扩展开发系列之十六:扩展中可用的Chrome浏览器API

    除了Chrome浏览器支持的chrome.* API之外,Chrome浏览器扩展还可以使用Chrome浏览器为Web页面或Chrome app提供的APIs.对于Chrome浏览器2支持的API,还可 ...

  4. C实现dos图文菜单程序实例

      前言 公司一台服务器是novell环境,文件管理是基于dos6.22的,客户端启动需要一个图文菜单.   实现    编程环境:汉化版TC2.0 菜单基本功能:显示提示项.显示dbf中的行情信息. ...

  5. Python执行系统命令:使用subprocess的Popen函数

    使用subprocess的Popen函数执行系统命令 参考: http://blog.sina.com.cn/s/blog_8f01450601017dlr.html http://blog.csdn ...

  6. join和wait

    最近看多线程的时候发现对于join的理解有些错误,在网上查了不少资料,根据自己的理解整理了一下,这里之所以把join和wait放在一起,是因为join的底层实现就是基于wait的,一并讲解更容易理解. ...

  7. vue项目优化之按需加载组件-使用webpack require.ensure

    require-ensure和require-amd的区别: require-amd 说明: 同AMD规范的require函数,使用时传递一个模块数组和回调函数,模块都被下载下来且都被执行后才执行回调 ...

  8. C#设计模式(1)-单例模式

    单例(Singleton)模式介绍 单例模式:也可以叫单件模式,官方定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 单例模式的特点: 单例类只能有一个实例. 单例类必须自己创建自己的唯一 ...

  9. Thread(线程)四

    今天继续讲讲线程的异常处理.线程取消.多线程的临时变量和线程安全lock的问题. 1.异步处理. 一般来说如果是同步方法的异步处理,我们大多都是try catch住,但是异步方法应该怎么做呢. #re ...

  10. JavaScript基本数据类型

    JavaScript基本数据类型 在JavaScript种一共有6种数据类型:Null.Undefined.Boolean.String.Number.Object.其中Object是一种复杂数据类型 ...