注:fedora版本与RTEMS版本以及相应的交叉编译工具要一一对应,否则会出现编译不通过的问题或版本老旧问题,具体请查看ftp://ftp.rtems.com/pub/rtems/linux/下的对应情况
1、 虚拟机下安装fedoraversion21,(各个版本安装过程都差不多,大致步骤都一样,个中有些许差别)
参考: http://blog.csdn.net/meng4411yu/article/details/8692526
2、 配置Linux下C语言开发环境,安装gcc,glibc,perl
参考:http://blog.csdn.net/sun_shine_/article/details/8393862
(此外在source builder编译交叉编译工具的时候,也有一些配置工作,这里可一并进行,只需要执行一下语句即可
# yum install ncurses-devel python-develgit bison gcc cvs gcc-c++ \
flex texinfo patch perl-Text-ParseWords zlib-devel
)
另外尽量检查一下系统是否已经安装gcc,make,makeinfo,否则在后面的安装过程中会出现一些缺少文件的情况
3、 安装交叉编译工具(主要有gcc,gdb,newlib,autoconf,automake等)
这里有三种安装方法
第一种:把需要用到的各种交叉编译的包全部下载下来然后rpm –ivh XXX.rpm
此种方法需要注意各个安装包之间的依赖性,以及版本的问题,有时还会出现所依赖的包没有安装或者即使安装后还会提示所依赖的包没有安装问题,比如这位
http://blog.csdn.net/coolbacon/article/details/6581486而且你也不知道你自己下的包是否就是它所需要的包,所以不建议使用这种笨方法。
第二种:安装仓库,下载key并导入后就可以用yun install XXX进行安装了,而且不用担心包的依赖的问题,安装仓库需要安装2个包,此处在这里下载
ftp://ftp.rtems.com/pub/rtems/linux/4.11/fedora/21/x86_64/
两个包:
rtems-4.11-release-0.20140713.0-1.fc21.noarch.rpm
rtems-4.11-yum-conf-0.20140713.0-1.fc21.noarch.rpm
依次安装,然后在/etc/yum.repos.d/rtems-4.11.repo中enable=1的地方
把源的基地址改为ftp://ftp.rtems.com/pub/rtems/linux/4.11/fedora/21/x86_64/ 即可
这时就可以使用yum install进行安装了,例如
yum install rtems-4.11-arm-rtems4.11-binutils就可以自动下载安装binutil包以及其所依赖的所有包
第三种:此种方法用于编译最新的交叉编译工具(我用的就是此种方法),具体参考
https://ftp.rtems.org/pub/rtems/people/chrisj/source-builder/source-builder.html
按照步奏从2.1节开始做,注意
(1) 2.1节新建文件夹要改成你自己要建的工程文件夹
(2) 2.4节直接跳过,执行2.5节如下所示的地方,打包但不安装命令
A package tar file can be created byadding the --pkg-tar-files to the sb-set-builder command. This creates a tarfile per package built in the build set.
$ ../source-builder/sb-set-builder --log=l-sparc.txt \
--prefix=$HOME/development/rtems/4.11 \
--bset-tar-file --pkg-tar-files --no-install 4.11/rtems-sparc
此处即可把所需要的交叉编译链打包,并且相互之间没有依赖性,直接解压缩,并把bin
加入环境变量即可进行源代码的编译
此处要注意prefix后面的路径,此处路径为你给压缩包设置的路径,压缩包必须在development文件夹所在的地方同级解压缩,否则当你对交叉编译链解压缩的时候就会在同级文件夹下新建development/rtems/4.11,并把文件解压到4.11文件夹下,这样的话当你把bin目录加入环境变量的话就会非常繁琐。
4、 下载源代码:
前两种方式直接下载压缩包解压缩即可
使用上面第三种方法需要通过git获取最新的源代码,
在terminal执行#git clone git://git.rtems.org/rtems.git即可获取源代码
5、 编译
进入源码目录
#export PATH=/opt/rtems-4.11/bin:$PATH //红色为工具链的bin目录,即上述第三种方法的//bin目录
#./bootstrap – c //clean
#./bootstrap – p //pre-install
#./bootstrap //生成configure文件(直接下的源码包已经有configure文件,但需要配置)
然后新建编译文件夹,建在源代码文件夹里面和外面均可,但是configure的时候要注意路径
此处直接建在里面
#mkdir smdk2410build //创建build-point—> smdk2410build
#cd smdk2410build //进入build-point
#../configure --target=arm-rtems4.11 --enable-posix--disable-itron --disable-cxx --disable-networking --enable-rtemsbsp=smdk2410 --prefix=install-point
#make
#make install
若无错误出现且之后在install-point(没有的话就默认bin文件夹下) 安装点会多出arm-rtems4.11/smdk2410文件夹,则编译成功,要生成exe或bin文件,请看下一步
6、 编译examples,生成bin文件
#git clonegit://git.rtems.org/examples-v2.git examples-v2
#cd examples-v2
#export RTEMS_MAKEFILE_PATH= install-point/arm-rtems4.11/smdk2410
#make
编译结束后,应该看到下面多了一个o-optimize的文集夹。hello.exe 即是编译后生成的elf文件。进入hello.exe所在文件夹,通过下面指令 转换成bin文件
#arm-rtems4.11-objcopy -O binary -S hello.exe hello.bin