这周致力于交叉编译环境的建立。这个基本上搞定了,不过过程及其艰辛,而且总有戏剧性的事件发生。
我开发的对象是Davinci,是一个arm9+DSP的东西。开始的时候,用一般的arm-linux开发环境进行开发,结果编译出的程序下载到系统里面,用ls命令可以看到,但是执行的时候总是说-sh no such file or directory.很郁闷。
我开始在怀疑权限和路径的问题,看了一下程序不能执行的原因,说是路径的问题,但我用绝对路径执行还是不行。我又从sh下手,感觉是不是profile的问题,最终也搞不定。我又试着修改权限,但是还不行。最后我执行了系统自带的例子,可以。我把例子拷出来,重新下进去就可以执行。我想是不是编译器的问题?
之后我就用系统自带的编译器来编译。但是一直出错,开始我只考了编译器过去,说是头文件找不到,我开始不知道怎麽办?后来想了想交叉编译的原理,是不是目标文件系统没拷过去,于是我把目标系统的源文件拷过去,结果hello world的例子说error option march=armv5t,莫名其妙,我之后就从march下手,试了多种参数,包括arm,arm9,386等,还是不行。编译例子的时候说是asm/...找不到,之后我想方设法弄了一个asm过去,最中错误是error optionmarch=armvt,现在所有的问题都归结到了这一点。我想是不是与armv5t相关的包没有?之后就一直努力在这个上面做文章。后来发现的确是有一个支持包没装,但是他好像是从光盘安装的,怎么装都装不上。后来就联系了一下师兄,他是说还有六张光盘,第二天,拿到了光盘,按照说明安装,重新编译hello world,一眨眼就过去了,下到里面执行,ok!太夸张了,幸福来得太快。之后便势如破竹,把支持的东西都编译了。
大家以后建立环境的时候一定不要找到真正的支持环境,不然害死人了。
新的环境建立后,发现他的条理相当清晰,有编译环境,目标文件,开发工具。仔细对照了二者的区别,发现在前一个开发工具里少了一部分bin文件。
当初我也观察了编译的过程,首先把文件所包含的头文件弄进去,然后是连接的过程,我开始编译不出输出文件时也尝试吧编译过程分段,输出.out文件,没有链接,下载到板子中,提示标点出错。后来看看确失的那部分文件就是在连接时用的。
继续努力中。
阅读(985) | 评论(1) | 转发(0) |