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
转载于:https://www.cnblogs.com/tangshiguang/p/6735727.html
rtems的GNU(GCC)编译环境配置相关推荐
- Linux本地yum源配置以及使用yum源安装gcc编译环境
本文档是图文安装本地yum源的教程,以安装gcc编译环境为例. 适用范围:所有的cetos,红帽,fedroa版本 适用人群:有一点linux基础的小白 范例系统版本:CentOS Linux rel ...
- VScode+gcc编译环境搭建
VScode+gcc编译环境搭建 VScode下载 GCC安装 可能出现的问题 一些IDE集成开发环境占用内存大,体量大,比如Visual studio. Visual Studio Code (简称 ...
- linux 编译opencl,OpenCL编译环境配置(VS+Nvidia)
英伟达的显卡首先要下载安装CUDA开发包,可以参考这里的步骤: VS2015编译环境下CUDA安装配置 安装好CUDA之后,OpenCL的配置就已经完成了80%了,剩下的工作就是把OpenCL的路 ...
- makefile:带你了解一种常用于GNU gcc编译的工具语言
摘要:该文章主要介绍makefile,一种常用语GNU gcc编译的工具语言,同时LiteOS也是利用该文件对工程项目进行make构建生成执行文件的. LiteOS源码中使用makefile进行文件的 ...
- 团队环境搭建:MTK平台,PTK5.1、Supernova编译环境配置
团队环境搭建:MTK平台,外销TV,PTK5.1.Supernova编译环境配置 文章目录 团队环境搭建:MTK平台,外销TV,PTK5.1.Supernova编译环境配置 一.前言 二.硬件环境要求 ...
- STM32 gcc编译环境搭建
STM32 gcc编译环境搭建 标签(空格分隔): stm32 gcc Makefile 说在前面的话 gcc编译器兼容Windows.Linux和MAC,可自行去官网下载,此处提供参考链接:http ...
- Hi3516EV200 编译环境配置及交叉编译软件包
原文地址:Hi3516EV200 编译环境配置及交叉编译软件包 - WindSpiritIT 基础信息 OS: Ubuntu 16.04 xenial SDK 版本: Hi3516EV200R001C ...
- Fluent UDF编译环境配置 VS2019
Fluent UDF编译环境配置 VS2019 环境配置 问题记录 继续记录调试过程 仅用一个host 仅用一个node 两个都放进去 换个电脑继续报错 记录错误 环境配置 生成PATH文件的,有的没 ...
- Windows下的gcc/gc++编译环境配置
最近有很多算法设计的网络大赛,其中大部分的C/C++都是采用Linux下的GCC/G++编译器.配置GCC编译器大概有这几种途径:装Linux系统.装Linux虚拟机或者在Windows环境下模拟Li ...
最新文章
- [转] Spring Boot特性
- OpenGL 重复渲染
- java buffer 记事本_Java实现记事本|IO流/GUI
- 如何分享文件_分布式文件存储系统如何分享文件
- Java实现简易的文件的迁移器
- python多行语句_python多行语句
- ORACLE数据库多表关联查询效率问题解决方案
- N划分成若干个奇正整数之和的分法有多少种---动态规划
- 8.python之面相对象part.6(反射__call__,__setattr__,__delattr__,__getattr__)
- 黑苹果OC引导添加AX200无线网卡驱动
- 阿里巴巴编码规范习题
- win10怎么解除bitlocker加密?
- mysql 学习指南
- java poi导出下载excel报表或下载到指定路径
- vue项目中-打印页面中部分区域的内容
- GetDC和BeginPaint
- 浏览器默认开启无痕模式
- java古诗_java抓取古诗文的单线程爬虫
- 随机森林实现及调参的R与Python对比——以泰坦尼克幸存者数据为例
- android开发系列之性格测试,性格色彩测试android程序开发之十--输出结果
热门文章
- JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(推荐七)
- 《Python核心编程》第二版第36页第二章练习 续一 -Python核心编程答案-自己做的-...
- 测试php程序运行时间
- shell中#*,##*,#*,##*,% *,%% *的含义及用法
- 学生时代的最后一个新年,请一定要做这五件事...
- windows 8 突然不能上网 LSP 二种修复方法
- 【Linux】Centos7安装之后,双系统的情况下,怎么能在CentOS7下访问Windows的磁盘...
- MATLAB 数据分析方法(第2版)1.3 MATLAB基本语法
- [LeetCode]--5. Longest Palindromic Substring
- 第二阶段个人总结06