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
rtems的GNU(GCC)编译环境配置的更多相关文章
- Linux本地yum源配置以及使用yum源安装gcc编译环境
本文档是图文安装本地yum源的教程,以安装gcc编译环境为例. 适用范围:所有的cetos,红帽,fedroa版本 适用人群:有一点linux基础的小白 范例系统版本:CentOS Linux rel ...
- CentOS离线安装GCC编译环境
gcc编译环境rpm下载 安装相关的rpm包,具体版本可能随时间变化而变化,可以去以下地址下载: 重庆大学镜像:http://b.mirrors.lanunion.org/CentOS/中国科学技术大 ...
- linux内核编译环境配置
linux内核编译环境配置 如果不是编译内核,只需要安装与内核相匹配的kernel-devel开发包即可.即是/lib/modules/`uname -r`/build -> /usr/src/ ...
- Syslinux编译环境配置简要步骤
由于毕业设计要做一个加密U盘的LINUX,需要修改一sysylinux引导程序,在网上很少有关于syslinux编译环境配置的文章,在此简要总结一下,发出来共享. 需要的软件: 1. vmware ...
- Android编译环境配置
Android编译环境配置 网上关于Android编译环境配置的整理资料有不少,经整理亲测后,希望能给需要的亲们提供帮助. 主要分为四步: 1.安装JDK(Java Standard Edition ...
- RedHat 5下安装gcc编译环境的具体步骤
RedHat 5下安装gcc编译环境的具体步骤 在RHEL5系统中默认不安装linux系统中的开发编译环境(gcc),此软件包安装时依赖其他包较多 在以前使用RHEL4时可以通过如下命令安装: rpm ...
- mac OS(OS X)的OI编译环境配置指南
编译环境:gdb+Atom 如何安装gdb: http://logic0.blog.163.com/blog/static/1889281462014183271283/ Atom下载地址: ht ...
- Android编译环境配置(Ubuntu 14.04)
常识:编译Android源代码需要在Linux系统环境下进行... 在Linux中,开发Android环境包括以下需求:Git.repo.JDK(现在一般使用OpenJDK)等:其中,Git用于下载源 ...
- Berkeley DB (VC6.0 编译环境配置)
操作系统:winxp VC环境:VC6.0 必需文件:Berkeley DB安装文件(db-.msi) 下载地址:http://www.oracle.com/technology/software/p ...
随机推荐
- Spring Data JPA 复杂/多条件组合查询
1: 编写DAO类或接口 dao类/接口 需继承 public interface JpaSpecificationExecutor<T> 接口: 如果需要分页,还可继承 public ...
- new/delete 与 malloc/free的区别
一.概述 在C++中,申请动态内存与释放动态内存用new/delete 与 malloc/free都可以,而且他们的存储方式相同,new/malloc申请的动态内存位于堆中,无法被操作系统自动 ...
- linux函数的阻塞与非阻塞IO及错误处理
1.阻塞是指进程等待某一个事件的发生而处于等待状态不往下执行,如果等待的事件发生了则会继续执行该进程.调用系统阻塞函数可能会导致进程阻塞进入睡眠状态. 2.阻塞IO之read读取键盘输入数据 3.li ...
- maven简介及基础使用
一.Maven简介 Maven可译为"知识的积累"."专家",主要服务于基于Java平台的项目构建.依赖管理和项目信息管理. 1.Maven-项目构建工具 ...
- LFCP
场景:总结LFCP项目开发中遇到的问题! 1 运营支撑 项目结构: 1.1 hessian配置 服务端实现: 客户端调用: 1.2 问题排查 之前一段时间,运营支撑项目能够正常运行,中间有其它事情要做 ...
- Objective-c 多线程操作 自定义NSOperation 模拟下载
写在前面 使用多线程下载图片,使用内存缓存和磁盘缓存. 这里只为理解NSOperation及其派生类 真要应用到APP中 请下载成熟的第三方库 效果 下载多张图片时可控制线程并发数 分析 自定义NSO ...
- 用subline text写PHP后台服务器POST请求
1 运行XAMPP程序,看到Apache Web Server 是Running状态即可 2 打开Subline text ,新建一个PHP文件,选择保存路径:应用程序->XAMPP->h ...
- InnoDB关键特性之刷新邻接页-异步IO
Flush neighbor page 1.工作原理 2.参数控制 AIO 1.开启异步IO 一.刷新邻接页功能 1.工作原理 当刷新一个脏页时,innodb存储引擎会检测该页所在区(extent)的 ...
- Android常用布局、文件存储与权限、XML
常用的布局 LinearLayout Android 2.2开始fill_parent改名为match_parent ,从API Level为8开始我们可以直接用match_parent来代替fill ...
- Dapper入门教程(一)——Dapper介绍
Dapper是什么? Dpper是一款.Net平台简单(Simple)的对象映射库,并且Dapper拥有着"微型ORM之王"的称号.就速度而言与手写ADO.NET SqlDateR ...