Building the RTEMS toolset on Ubuntu 11.04
来源:互联网 发布:万德数据库 价格 编辑:程序博客网 时间:2024/06/05 20:22
最近开始摸索rtems系统,之所以选择它作为我心目中理想的RTOS还是看中它是开源、可靠性非常好、资料齐全、功能也能满足要求。关注了很久以后于是乎决定自己尝试动手移植到我的STM32板子上,不过千里之行始于足下,当然要从最基础的做起。不想一开始就在部署开发环境上耽误了许久,这篇bolg就记录了部署开发环境的整个过程。
1、环境的准备
一直是ubuntu的爱好者所以很自然的选择了最新的ubuntu 11.04,这是个在U盘上部署的linux,主要是方便,可以随便找台电脑来启动我的系统。rtems自然也会部署到这里。由于ubuntu对权限管理的很死,安装时如果频繁输入sudo很痛苦,而且使用root用户也为以后带来诸多不变,这里我干脆将rtems的安装目录放到了home/llemmx下。整个编译过程是参考官方wiki上的一遍文章。http://www.rtems.com/wiki/index.php/Building_the_RTEMS_toolset_on_Ubuntu
安装系统支持包
sudo aptitude install m4 patch build-essential texinfo cvs \ libncurses5-dev libgmp3-dev libmpfr-dev libmpc-dev autoconf \ autotools-dev automake
2、编译目录与安装包准备
从http://www.rtems.org/ftp/pub/rtems/SOURCES/4.11/上下载rtems工具链的源代码主要有:
http://www.rtems.org/ftp/pub/rtems/SOURCES/4.11/binutils-2.21.1.tar.bz2
http://www.rtems.org/ftp/pub/rtems/SOURCES/4.11/gcc-core-4.6.1.tar.bz2
http://www.rtems.org/ftp/pub/rtems/SOURCES/4.11/gcc-core-4.6.1-rtems4.11-20110825.diff
http://www.rtems.org/ftp/pub/rtems/SOURCES/4.11/gcc-g++-4.6.1.tar.bz2
http://www.rtems.org/ftp/pub/rtems/SOURCES/4.11/gdb-7.3.1.tar.bz2
http://www.rtems.org/ftp/pub/rtems/SOURCES/4.11/gdb-7.3.1-rtems4.11-20110905.diff
http://www.rtems.org/ftp/pub/rtems/SOURCES/4.11/gmp-4.3.2.tar.bz2
http://www.rtems.org/ftp/pub/rtems/SOURCES/4.11/mpc-0.8.1.tar.gz
http://www.rtems.org/ftp/pub/rtems/SOURCES/4.11/mpfr-2.4.2.tar.bz2
http://www.rtems.org/ftp/pub/rtems/SOURCES/4.11/newlib-1.19.0.tar.gz
在/home/llemmx/下建立rtems-4.11与rtems-bsp目录,建立这么特殊的目录方便频繁替换。
3、解压缩源代码
tar xjf ../rtems/binutils-2.21.1.tar.bz2 tar xjf ../rtems/gcc-core-4.6.1.tar.bz2 tar xjf ../rtems/gcc-g++-4.6.1.tar.bz2 tar xzf ../rtems/newlib-1.19.0.tar.gz tar xjf ../rtems/gdb-7.3.1.tar.bz2 tar xjf ../rtems/gmp-4.3.2.tar.bz2 tar xjf ../rtems/mpc-0.8.1.tar.gz tar xjf ../rtems/mpfr-2.4.2.tar.bz24、编译源代码与相关问题解决cd binutils-2.21/ cat ../../rtems-src/binutils-2.21-rtems4.11-20110107.diff | patch -p1 cd ../gcc-4.6.1/ cat ../../rtems-src/gcc-core-4.6.1-rtems4.11-20110825.diff | patch -p1 cd ../newlib-1.19.0/ cat ../../rtems-src/newlib-1.19.0-rtems4.11-20110826.diff | patch -p1 cd ../gdb-7.3.1/ cat ../../rtems-src/gdb-7.3.1-rtems4.11-20110905.diff | patch -p1 cd ..
mkdir b-binutils cd b-binutils ../binutils-2.21/configure --target=arm-rtemseabi --prefix=/home/llemmx/rtems-4.11 make all make info sudo make install cd .. export PATH=/home/llemmx/rtems-4.11/bin:${PATH}
在编译binutils时遇到了语法错误后修改其中一个结构体的初始化才解决问题,这个问题比较简单。
cd gcc-4.6.1/ ln -s ../newlib-1.19.0/newlib . cd .. mkdir b-gcc cd b-gcc/ ../gcc-4.6.1/configure --target=arm-rtemseabi --with-gnu-as --with-newlib --verbose --enable-threads \ --enable-languages="c,c++" --prefix=/home/llemmx/rtems-4.11 make all make info sudo make install cd ..
这里遇到的问题比较棘手, 主要的错误集中在mpfr库的路径上,一直查到最后才发现原来ubuntu使用的mpfr库版本以及改变,这里偷懒使用 ln -sf libmpfr.so.4.0.0 libmpfr.so.1终于解决问题。 另外因为目标器件是STM32所以MCU编译的选择是arm-rtemseabi支持最新的arm指令集。
在编译最新的gcc-4.8.0时遇到了奇怪的[s-automata] error 137错误的字样,后来确认是内存不足引起。 类似gdb还有其它软件包暂时可以不需要,这里编译掠过。 下面准备写一下编译BSP包的问题。
- Building the RTEMS toolset on Ubuntu 11.04
- Building open80211s on Ubuntu
- Green Building on the Rise
- Running your first RTEMS program on the Raspberry Pi
- Starting up Pi/RTEMS development again, updates on the way!
- Building Domain Specific Languages on the CLR
- fix Android building error on ubuntu 11.10
- Building Clang and libc++ on Ubuntu Linux
- Building Android 4.0.3 on Ubuntu 12.04
- ERROR BUILDING VIM on Ubuntu--Solution
- 在Ubuntu上编译VirtualBox(Building VirtualBox On Ubuntu)
- rtems 4.11 ubuntu 12.04
- Ubuntu下编译RTEMS
- The Valuable Toolset for iOS Development
- RTEMS yield_flash on MINI2440 QEMU
- building android/ubuntu-touch on 32bit machine
- Building AMDGPU Development Linux 4.15 Kernel on Ubuntu 17.04
- RTEMS on AT91SAM9260 板级调试后记
- Socket
- 域名解析文件Hosts是什么文件?有什么作用
- Android利用系统广播---监听应用程序安装和卸载
- namenode,datanode,client三者的关系
- ping 原理与ICMP协议及Ping命令的过程与返回信息分析
- Building the RTEMS toolset on Ubuntu 11.04
- CreateFile,ReadFile等API详解(或者说MSDN的翻译)
- 矩阵分解的Jungle
- XMPP协议分析-原理篇
- error: 'for' loop initial declaration used outside C99 mode的解决方法
- 清空代码防止查看源代码
- Android高手进阶教程(四)之----Android 中自定义属性(attr.xml,TypedArray)的使用!
- 第二章 .Net 控件开发(WebForm) 开发自定义复合控件(1) 继承ComPositeControl类以及子控件
- 敏捷测试的方法和实践