Chinaunix首页 | 论坛 | 博客
  • 博客访问: 58341
  • 博文数量: 11
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 70
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-28 18:12
文章分类

全部博文(11)

文章存档

2015年(3)

2014年(8)

我的朋友

分类: 嵌入式

2014-12-04 20:34:13


1. 我们首先来了解一下, 什么是交叉编译环境?  为什么要进行交叉编译?

(虽然这里只是截图, 但这里的内容我觉得介绍得非常好)


2. 接下来介绍如何安装交叉编译工具(就是一个编译软件)

从上面的介绍可知, 交叉编译器一般都是有开发板公司提供的, 我们这里只关心如何安装.  所以请根据开发板的实际情况来选择交叉编译器, 如arm架构的开发板, 就用arm-linux-gcc交叉编译器,下面就以cross_3.3.2交叉编译器来说明如何安装


3. gcc和arm-linux-gcc是什么关系?区别是什么?

        gcc是linux系统下面用来将代码编译成一个可执行程序的手段。编译出来的,是适用于linux系统的可执行二进制文件。可执行程序其实就是一堆的0101二进制机器码。这些机器码代表什么含义只有机器本身能理解。所以你用gcc编译出来的可执行程序只有在linux系统下面可以运行。举个例子你的可执行程序里面有一句01011.这句在linux下面可能是吃饭的意思,但是在windows下面可能01011是撒尿的意思。那你说linux的可执行程序放在window下面能正常运行吗?肯定不能嘛。你要的目的是吃饭,它帮你执行撒尿很显然就不对了。同样的可能01011ARM下面的意思是睡觉。不同系统的机器码含义是不一样的。所以你在linux系统下面写的代码要怎样才能在ARM系统上面跑呢。这就需要用到交叉编译。

arm-linux-gcc是什么意思?就是告诉你的编译器,我编写的环境是linux,但是我希望生成的可执行程序是在arm上面跑的。这就是交叉编译。编写环境和执行环境分离的一种手段。

        理论上说, 当我们把linux经过修改移植到ARM9上面后, 我们也还可以直接在开发板上用gcc进行编译, 这样生成的文件就可以直接在开发板上运行, 但是我们都知道, 编译过程中会产生很多过程文件, 会占用很大的内存, 并且编译需要很大的内存,这样显然在开发板上直接编译很不合适, 所以就采用交叉编译的方式.

        它们会把同一个c源码编译成不同的汇编指令然后生产不同平台的二进制可执行的文件, 也就是说两种编译器执行的是不同的编译标准, 常见的标准有EABI, 什么是EABIEmbedded application binary interface,  即嵌入式应用二进制接口,是描述可连接目标代码,库目标代码,可执行文件影像,如何连接,执行和调试,以及目标代码生成过程,和c, c++语言接口的规范,是编译连接工具的基础规范,也是研究它们工作原理的基础。


the end !



阅读(2251) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~