| 0 意見 ]

http://hi.baidu.com/lovingjava/blog/item/85091aee5a2bdaf8cf1b3e7a.html

《一步步写嵌入式操作系统》环境配置2011-05-14 20:26最近在看一本书,叫《一步步写嵌入式操作系统》,感觉写的不错,让我想起以前看过的《Orange's一个操作系统的实现》,这书比那本书简单,毕竟这是写嵌入式的操作系统嘛,但是这本书的售后就不如那本书了,官方网站比《O》可要冷清多了,这就导致开发环境很难配置好,尤其是对于Linux外行来说就更难了。经过一天的琢磨,我总算把环境问题都给解决了,所以要赶紧记录下来以免以后忘了,顺便给其他学习《一步步写嵌入式操作系统》一书的人提供一点帮助。

1.首先从cygwin官网下载setup.exe,然后按照书中的提示安装就行了。(切记安装时选择gcc4和make组件)。建议安装的目录中不要有空格,我的安装目录是H:\cygwin\。(你们可以根据自己的情况选择其他的目录)

2.把从www.leeos.org上下载下来的leeos_tools_for_cygwin.tar.gz复制到H:\cygwin\usr中
3.打开cygwin,输入命令cd /usr
4.输入命令tar zxvf leeos_tools_for_Cygwin.tar.gz将刚才复制过来的压缩包解压到当前目录
5.输入命令echo "PATH=\$PATH:/usr/leeos_tools_for_Cygwin/bin">>/etc/profile,输入这个命令其实就是设置cygwin的环境变量,不信看一下H:\cygwin\etc中的profile文件,在最下面多了一句话PATH=$PATH:/usr/leeos_tools_for_Cygwin/bin。重启cygwin

6.按照书上说此时就可以用命令arm-elf-gcc来编译C文件了,但是我无论怎么试,总是说permission denied,原来是我们没有权限来运行arm-elf-gcc命令。

我们在H:\ARMOS\usr\leeos_tools_for_cygwin\bin目录下找到了arm-elf-gcc.exe,于是我们在命令行中输入chmod 777 /usr/leeos_tools_for_Cygwin/bin/arm-elf-gcc.exe,此命令就是设置arm-elf-gcc.exe的权限,让我们有权限来运行它。

7.这是再次试着用arm-elf-gcc来编译c文件,会发现有一个错误error trying to exec 'cc1': execvp: No such file or directory,这意味着cygwin找不到cc1命令,

我们搜索一下,发现在H:\ARMOS\usr\leeos_tools_for_cygwin\libexec\gcc\arm-elf\4.4.2目录下有我们想要的cc1.exe,
我们可以用之前用过的方法再设置一下cygwin的环境变量让cygwin能够找到该目录下的cc1.exe,

所以我们输入命令echo "PATH=\$PATH:/usr/leeos_tools_for_Cygwin/libexec/gcc/arm-elf/4.4.2">>/etc/profile,

此时再看一下H:\cygwin\etc中的profile文件,在最下面又多了一句话PATH=$PATH:/usr/leeos_tools_for_Cygwin/libexec/gcc/arm-elf/4.4.2,现在cygwin就能找到cc1.exe了。再次重启cygwin

8.现在在试一下用arm-elf-gcc来编译c文件,又会出现错误permission denied,这回我们一下就明白原因了,就是我们现在同样没有权限来运行cc1.exe,所以还用刚才的方法设置一下权限,这回输入chmod 777 /usr/leeos_tools_for_Cygwin/libexec/gcc/arm-elf/4.4.2/cc1.exe

9.如果在试着运行arm-elf-gcc来编译c文件的话,同样还会出现类似的permission denied和权限错误,所以我们干脆一下把需要设置的环境变量和权限都设置完。


所以,总结一下步骤
1.下载安装cygwin

2.将下载下来的leeos_tools_for_cygwin.tar.gz放到H:\cygwin\usr中,并用命令cd /usr和tar zxvf leeos_tools_for_Cygwin.tar.gz解压

3.设置环境变量,依次输入以下三条命令
echo "PATH=\$PATH:/usr/leeos_tools_for_Cygwin/bin">>/etc/profile
echo "PATH=\$PATH:/usr/leeos_tools_for_Cygwin/libexec/gcc/arm-elf/4.4.2">>/etc/profile
echo "PATH=\$PATH:/usr/leeos_tools_for_Cygwin/arm-elf/bin">>/etc/profile
然后重启cygwin

4.用chmod 777命令把刚才设置的三个目录下的所有exe文件都设置一下权限。(肯定有类似批处理的那种命令可以一下把所有exe文件都设置完,但是我对linux环境不怎么熟悉,所以在这里还是用的最原始的办法一个一个改,还好一共也没几个exe文件)
5.把skyeye.exe复制到H:\cygwin\usr\leeos_tools_for_Cygwin\bin中。这样就算把环境配置完了。呵呵,鼓捣了我一天啊,希望对有同样问题的人有帮助。

belovedtttl 2011-08-12 22:38 | 回复你好,留个qq 659346010 希望可以加我 相互讨论下

 4
Kongcsdn 2011-09-18 13:46 | 回复你好,能不能把那个/etc/profile这个文件给我发一下啊
我的总是提示unexpected end of file.
 5
gccman 2011-09-21 10:47 | 回复顶呱呱,不错,我也碰到同样问题,看了你这文章搞好了。以后的经验教训是碰到这类问题要认真执行下find命令。
 6
lovingjava 2011-10-11 22:17 | 回复回复Kongcsdn:不好意思,一直没有登录百度空间,你现在还需要那个文件吗,如果需要,把邮箱给我,我给你发过去。
 7
Kongcsdn 2011-10-12 20:53 | 回复回复lovingjava:啊,不用了。谢谢!嘿嘿,我自己又重装了一遍,现在好了!还是很感谢lz的热情~
 9
farce 2011-10-27 09:06 | 回复 chmod 777 -R *
(其中的-R是递归处理,*代表所有文件) 

0 意見

張貼留言