作者 Ray
RTEMS版权所有,转载请注明:来源http://www.rtems.net,作者ray@rtems.net
摘要
本节主要介绍RTEMS编译的步骤。
交叉编译环境建立好以后,编译就很简单了,解压rtems的文件夹
$tar xjvf rtems4.6.2.tar.bz2
建立rtems的编译路径:
$ mkdir rtems_i386
这里将以386为例进行介绍,毕竟386最容易实践,此外,i386以上的CPU体系结构远比常见的嵌入式CPU复杂。熟悉了386类型rtems的编译过程,其他平台建立过程可依此类推。
首先要输出刚才编译好的工具链:
export PATH=<INSTALL_POINT>/bin:${PATH}
这里<INSTALL_POINT>是工具链所在的目录(也就是arm-rtems-gcc这些可执行文件的目录),对于FreeBSD用户,这一步可以忽略,对于依照刚才步骤建立工具链的读者,<INSTALL_POINT>对应的是:/home/ray/embedded/toolchain/
configure 指令的格式为:
../rtems-4.6.2/configure --target=<TARGET_CONFIGURATION> /
--disable-posix --disable-networking --disable-cxx /
--enable-rtemsbsp=<BOARD_SUPPORT_PACKAGE>/
--prefix=<INSTALL_POINT>
可以使用下面的命令:
../rtems-4.6.2/configure --target=i386-rtems /
--enable-rtemsbsp=i386ex /
--prefix=/home/ray/rtems/rtems-build
然后使用gmake指令产生二进制代码
$ gmake RTEMS_BSP=i386ex
产生i386的库代码
$ gmake RTEMS_BSP=pc686
产生奔腾pro以上版本CPU的二进制代码。 需要说明,configure的时候可以制定gcc的优化选项,比如:
CFLAGS_FOR_BUILD = -O1 CXXFLAGS_FOR_BUILD=-O1 CFLAGS_FOR_HOST=-O1/
CXXFLAGS_FOR_HOST=-O1 CFLAGS_FOR_TARGET=-O1 CXXFLAGS_FOR_TARGET=-O1
进入编译目录:
$ cd rtems-i386
进行配置
../rtems-4.6.2/configure --target=i386-rtems --disable-posix --disable-networking --disable-cxx --enable-rtemsbsp=i386ex --prefix=/home/ray/rtems/rtems-build
然后进行编译:
$gmake RTEMS_BSP="bsp1 bsp2 ...”
例如:
gmake RTEMS_BSP=pc586
$ ../rtems-4.6.2/configure --target=i386-rtems --disable-posix --disable-networking --disable-cxx --enable-rtemsbsp=pc386 -- prefix=/home/ray/rtems/rtems-build
$ gmake
这个例子
../rtems-4.6.2/configure --target=i386-rtems /
--enable-rtemsbsp= i386 /
--prefix=/home/ray/rtems/rtems-build
make all install
产生全部的i386的BSP(包括pc386,pc586,pc686......)
../rtems-4.6.2/configure --target=i386-rtems /
--disable-posix --disable-networking --disable-cxx /
--enable-rtemsbsp=i386ex /
--prefix=/home/ray/rtems/rtems-build
这里工具链安装在/home/ray/embedded/toolchain/目录下面。
../rtems-4.6.2/configure --target=i386-rtems /
--disable-posix --disable-networking --disable-cxx /
--enable-rtemsbsp=pc686/
--prefix=/home/ray/rtems/rtems-build
产生pc686的makefile。
注意空格!! =号后不能有空格,/前一定要有空格