2019-12-09

#linxu下编译i386架构的rtems

rtems相关的文件汇总压缩包,下载链接:链接:https://pan.baidu.com/s/1CGrnnakPs8j93Bpgrzko6A  提取码:6uz0

###rtems介绍

rtems是一个为嵌入式设计的实时操作系统,整个编译过程分为:1.编译rtems的编译工具链2.编译rtems的内核

##编译rtems工具链

###准备:

1.解压文件

解压下载的压缩包,解压的文件中,文件`rtems-source-builder-4.11.3.tar.xz`为编译工具链的源码,`rtems-4.11.3.tar.xz`为rtems内核源码,将这两个文件解压到工作目录下。

2.检查环境

进入源码的目录,执行`./source-builder/sb-check`检查当前环境是否满足要求

```

RTEMS Source Builder - Check, 4.11.not_released

Environment is ok

```

若提示如上则证明环境满足要求,不存在缺编译工具,若提示缺少工具,尝试安装以下工具,然后再执行检查环境指令,直到出现以上提示:

```

$ sudo apt-get install build-essential

$ sudo apt-get install git

$ sudo apt-get install python-dev

$ sudo apt-get build-dep binutils gcc g++ gdb unzip git

```

3.新建文件夹,有这样几个工作文件需要:1.编译工具链的安装路径2.内核的配置路径3.内核的安装路径,注意:2和3不是同一个路径,

```

#新建编译工具链路径

mkdir compiler

#新建内核配置路径

mkdir configrtems

#新建内核安装路径

mkdir installrtems

```

3.准备编译工具链所需要的工具包,编译工具链还需要这些文件:

```

autoconf-2.69.tar.gz    gcc-4.9.3.tar.bz2  mpfr-3.0.1.tar.bz2

automake-1.12.6.tar.gz  gdb-7.9.tar.xz    newlib-2.2.0.20150423.tar.gz

binutils-2.26.tar.bz2  gmp-5.0.5.tar.bz2  rtems-4.11.2.tar.xz

expat-2.1.0.tar.gz      mpc-0.8.2.tar.gz  rtems-tools-4.11.2.tar.xz

```

这些文件再解压的文件`4.11/source`下,将他们复制到(不要解压)`rtems-source-builder-4.11.3/rtems/sources`目录下

到此,准备工作完成。

###编译工具链

1.编译

进入`rtems-source-builder-4.11.3/rtems`目录,执行指令

```

../source-builder/sb-set-builder --log=build-log.txt \

--prefix=*替换compiler*/4.11\

4.11/rtems-i386

```

将*替换`compiler*`替换为你的compiler目录(之前新建的目录),目录必须为绝对路径,安装会自动进行,直到结束。

2.修改环境变量

编译完后还需修改环境变量,方便以后编译工具链的使用。

```

#修改profile文件

vi ~/.profile

#加入环境变量到最后一行,添加的内容为:

export PATH=*替换compiler*/compiler/4.11/bin:$PATH

```

同样,将*替换compiler*替换为你的compiler目录,然后执行`source ~/.profile`使环境生效.

3.测试环境变量

切换到任意目录,执行`i386-rtems4.11-gcc -v`命令,观察是否有说明gcc的版本,若有,则说明安装成功

###编译内核

1.配置内核

打开两个shell,一个进入rtems的源码目录,一个进入rtems的配置目录(注意一个是配置目录,一个是源码目录,后面多次会用到)且这两个目录不能为同一个。首先在源码目录执行 `./bootstrap`执行完后提示:

```

./testsuites/sptests

./testsuites/fstests

./testsuites/psxtmtests

./testsuites/psxtests

./testsuites/smptests

./testsuites/tools/generic

./testsuites/tools

./testsuites/mptests

./testsuites/rhealstone

./testsuites/samples

./testsuites/tmtests

./testsuites/libtests

./testsuites

```

执行结束后,在配置目录执行:

```

../rtems-4.11.3/configure

--target="i386-rtems" --enable-rtemsbsp=pc386 --enable-tests=samples --prefix=$HOME/installrtems

```

注意,configure为rtems的源码文件夹下的文件,你需要通过相对路径来指定,`--prefix=`后的路径为rtems安装目录,必须是绝对路径,执行完后提示:

```

target architecture: i386.

available BSPs: pc386.

'make all' will build the following BSPs: pc386.

other BSPs can be built with 'make RTEMS_BSP="bsp1 bsp2 ..."'

config.status: creating Makefile

```

2.编译

在rtems的配置目录执行:

```

make

make install

```

编译完成,这个步骤可能会报错:

```

Makefile:755: recipe for target 'pc386' failed

make[2]: *** [pc386] Error 1

make[2]: Leaving directory '/home/netlab/rtems/temp_build/i386-rtems/c'

Makefile:286: recipe for target 'all-recursive' failed

make[1]: *** [all-recursive] Error 1

make[1]: Leaving directory '/home/netlab/rtems/temp_build/i386-rtems/c'

Makefile:410: recipe for target 'all-recursive' failed

make: *** [all-recursive] Error 1

```

解决方法:

1.在rtems的源码目录执行

```

./bootstrap -c

./bootstrap

```

2.删除rtems的配置目录的所有文件(注意,是rtems的配置目录!!!)。

3.重新执行

```

../rtems-4.11.3/configure

--target="i386-rtems4.11" --enable-rtemsbsp=pc386 --enable-tests=samples --prefix=$HOME/installrtems

make

make install

```

3.测试:

1.安装qemu

```

sudo apt-get install qemu

```

2.运行测试案例

切换到配置目录下的`i386-rtems4.11/c/pc386/testsuites/samples/hello/`目录下,该目录有这几个文件

```

hello.bin  hello.exe  hello.num  hello.ralf  init.o  Makefile

```

执行

```

qemu-system-i386 -kernel hello.exe

```

测试成功!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,367评论 6 512
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,959评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,750评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,226评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,252评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,975评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,592评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,497评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,027评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,147评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,274评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,953评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,623评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,143评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,260评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,607评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,271评论 2 358