交叉编译器及常见编译错误

来源:互联网 发布:php读取zip文件 编辑:程序博客网 时间:2024/06/06 09:01

(1)交叉编译器

      在主机上用来编译其它类型机器上可执行代码的编译器就叫交叉编译器,我们进行嵌入式linux的开发主机大部分都是X86,而我们的嵌入式系统的处理器有可能是ARM/MIPS等非X86处理器,这时候就必须使用ARM/MIPS的交叉编译器才能编译出在这些处理器上能够执行的代码。这里我们使用的是ARM最新的EABI编译器。

      交叉编译器在编译的时候,对于浮点运行会预设硬浮点运算FPA(float point architecture),而没有FPA的CPU,比如三星的2440等,会使用FPE(float point emulation即软浮点),这样在速度上就会受到极大限制。使用EABI(embeded application binary interface)则可以对此改善处理。

(2)不修改MAKEFILE来建立编译环境

      将arm-2008q3.tar.bz2拷贝到ubuntu系统的某个目录,解压后比如目录是//192.168.254.128/share/LZD/arm-2008q3。使用VI编辑/etc/bash.bashrc,在文件最后加入环境变量设置(注:加bin的含义是交叉编译器工具目录):

PATH=/home/zhangcheng/share/LZD/arm-2008q3/bin:$PATH
export PATH  

      保存后,用source运行一次该文件,就可以了。

(3)gcc: error trying to exec 'cc1': execvp: No such file or directory 的解决

      今天在编译开发板环境时,明明设置好编译器的环境变量了,编译时就是会出现:gcc: error trying to exec 'cc1': execvp: No such file or directory 错误提示。后来发现一个方法可以解决,输入:whereis gcc,就可以了发现好几个gcc,包括/usr/bin/gcc,所以我就把PATH路径设过去,就OK了。

PATH=/usr/bin/gcc:/home/zhangcheng/share/LZD/arm-2008q3/bin:$PATH
export PATH  

(4)Clock skew detected. Your build may be incomplete 

如果你装了Windows Linux双系统,系统时间很可能出问题,从而造成文件修改时间比系统时间晚,两种办法:
1,应该是你的PC的系统时钟错误,在BIOS中修改正确。
2,使用touch命令将所有文件的时间戳修改为你系统的当前时间。解决方法:find ./-name "*" -exec touch {} \;

参考文章:http://hi.baidu.com/xdyang1986/blog/item/cfbfb3cad7606212be09e6cf.html

参考原文:http://blog.163.com/sinomice@126/blog/static/130557593200992181616726/

原创粉丝点击