搭建RTEMS的交叉工具链-针对arm,powerpc,i386(2)
- UID
- 1029342
- 性别
- 男
|
搭建RTEMS的交叉工具链-针对arm,powerpc,i386(2)
第二部建立步骤:
第一步:安装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
$make
$make install
第二步:解压gcc-4.3.2.tar.bz2,并应用补丁
$cd build
$tar xvf 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的文件,说明补丁应用成功
第三步:解压newlib-1.17.0.tar.gz,并应用补丁
$cd build
$tar xvf tar xvf../archive/newlib-1.17.0.tar.gz
$cd newlib-1.17.0
$patch -p1<../../archive/newlib-1.17.0-rtems4.10-20091009.diff //应用补丁
$find . -name "*.rej"-print //如果没有扩展名为.rej的文件,说明补丁应用成功
第四步:为了避免通常的两步编译gcc(即第一步:编译bootstrapgcc,第二步编译:fullgcc),我们把newlib库作为gcc的一个子目录进行编译,即使用符号链接将newlib库作为一个子目录链接到gcc目录中。
$cd gcc- 4.3.2
$ln -s ../newlib-1.16.0/newlib .
第五步:完全编译gcc
$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
$make all
$make info
$make install
经过上面的五步之后,基于PowerPC的交叉编译器就搭建起来了,我们可以用 $powerpc-rtems4.10-gcc–v 查看我们编译的编译器版本,示意图如下:
第三部分 编译rtems系统
$cd tools
$tar xjf../archive/rtems-4.10.2.tar.bz2
$mkdir build-rtems
$cd build-rtems
$../rtems-4.10.2/configure--target=$TARGET \
--disable-posix--disable-networking --disable-cxx \
--enable-rtemsbsp=mpc8349eamds\
--prefix=/home/tom/install_dir
$make all
$make install
这样编译的rtems系统就被安装到install_dir目录,示意图如下:
备注:
如果用上述的软件包直接编译基于arm的编译器,怎会出现:
checking sched.h usability...no
checking sched.h presence... no
checking for sched.h... no
configure: error: Required header sched.hnot found
configure: error: /bin/sh'../../../../../rtems-4.10.2/c/src/../../cpukit/configure' failedfor ../../cpukit
gmake[2]: *** [smdk2410] Error1
解决办法:把newlib更新至:newlib-1.18.0.tar.gz
同时应用补丁:newlib-1.18.0-rtems4.11-20101126.diff
下载目录:
ftp://ftp.rtems.com/pub/rtems/SOURCES/4.10/
需要注意:下载目录中的补丁是逐个累积的,我们只需要应用最新的补丁即可。
另外使用newlib-1.18.0.tar.gz其它软件包不变,可以直接编译i386平台的编译器,该平台newlib-1.18.0.tar.gz不需要打补丁。
附注:
为了把我们制作的上述编译器打包,这里说明一下经常用到的tar打包命令,tar在linux上是常用的打包、压缩、加压缩工具,参数很多,这儿仅仅列举常用的压缩与解压缩参数
参数:
-c :create 建立压缩档案的参数;
-x : 解压缩压缩档案的参数;
-z : 是否需要用gzip压缩;
-v: 压缩的过程中显示档案;
-f: 置顶文档名,在f后面立即接文件名,不能再加参数
举例:
1.将整个/home/tom/images 目录下的文件全部打包为/home/tom/images.tar
$tar -cvf /home/tom/images.tar/home/tom/images //仅打包,不压缩
$tar -zcvf /home/tom/images.tar.gz/home/tom/images //打包后,以gzip压缩
在参数f后面的压缩文件名是自己取的,习惯上用tar来做,如果加z参数,则以tar.gz 或tgz来代表gzip压缩过的tarfile文件
2.将 /home/tom/images.tar.gz 解压到/home/tom下面
$ cd /home/tom
$ tar -zxvf /home/images.tar.gz
解压到指定的目录
$ tar -zxvf /home/images.tar.gz -C/specific dir
解包到指定的目录
tar xvf filename.tar -C /specificdir |
|
|
|
|
|