这学期操作系统课设

老师给了一套大概是《嵌入式实时操作系统μC/OS-II》光盘里的东西 什么BC3的编译器啊什么的……

结果我口就贱了一下 跟老师说我在Linux里弄吧 上机就不去了 到时候把本拿过来给您检查

然后才发现给自己找了个麻烦差事

自己根本就没接触过这些东西嘛…………

先是装SkyEye

AUR->搜->有->1.2.8版本->装->装不上

自己编译 www.skyeye.org被墙 挂上gappproxy

先是最新版的skyeye1.3.0 我的gcc4.4.3编译不了 google之 无解 自己研究之 无解 又懒得在装个gcc3

接者skyeye1.2.9 不行……

继续1.2.8 OK了~ gcc4.4.3编译过去了~

然后装交叉编译器 pacman一下 发现还真有个cross-arm-elf-binutils、cross-arm-elf-gcc-base 速度装上~

然后又下了个ucos4skyeye1.9

发现用cross-arm-elf-binutils、cross-arm-elf-gcc-base编译不了

又下了个arm-elf-tools-20030314.sh

安装出现

tail: 无法打开"+43" 读取数据: 没有那个文件或目录

gzip: stdin: not in gzip format
tar: 它似乎不像是一个 tar 归档文件
tar: 由于前次错误,将以上次的错误状态退出

打开arm-elf-tools-20030314.sh 将tail后加入-n 并在文件末尾添加一空行 交叉编译器OK

make config 出现:

building target platform is /bin/sh: line 0: test: =: unary operator expected
/bin/sh: line 4: test: =: unary operator expected
 ???
 ------------------------------------------  
 I can not guess the host operation system
 please set OSTYPE variable in rules.make !
 or execute command export OSTYPE=linux-gnu 
 in bash shell, if your host system is linux.
 or execute commands export OSTYPE=cygwin 
 in cygwin bash shell, if your host system is cgwin.
 Then you should try make config again!
 ------------------------------------------

在samples/dir.make中添加OSTYPE=linux-gnu

make config

make dep

进入samples/simple_test

make 继续error……

skyeye_printf.o: In function `getnum':
/home/yangguang/Src/ucosii4skyeye/samples/simple_test/../../lib/skyeye_printf.c:110: undefined reference to `isdigit'
skyeye_printf.o: In function `skyeye_printf':
/home/yangguang/Src/ucosii4skyeye/samples/simple_test/../../lib/skyeye_printf.c:156: undefined reference to `isdigit'
make: *** [simple_test.elf] 错误 1

改之 在lib/skyeye_printf.c添加

static int isdigit(char ch)
{
    if (ch >= '0' && ch <= '9')
        return 1;
    return 0;
}

并注释掉#include <ctype.h>

根据readme输入skyeye -e simple_test.elf

发现n多error开始刷屏

继续google 发现要skyeye -c skyeye.conf -e simple_test.elf

终于能仿真了 却发现都是乱码……直接悲剧……

尝试了半天 终于在重新编译skyeye1.2.6后才一切正常

当场泪流满面……