Chinaunix首页 | 论坛 | 博客
  • 博客访问: 223046
  • 博文数量: 71
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 1025
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-25 19:00
文章分类

全部博文(71)

文章存档

2009年(2)

2008年(69)

我的朋友

分类:

2008-03-22 17:04:25

http://blog.csdn.net/absurd/archive/2006/03/30/645090.aspx

去年花了一个多月时间,为arm-linux平台编译程序库,其中包括zlibreadlinencursestslibTinyXlibpngjpegcairopangoglibatkgtk+match系列、SCIMGPE系列。由于之前没有经验,走了不少弯路,虽然从中学到了一些知识,大部分时间都浪费了。最近一些同事和朋友常问我一些关于交叉编译的问题,我想有必要总结一下,和大家分享一些心得。

 

什么是交叉编译呢?在回答这个问题前,我们先解释两个概念:

 

  机:运行编译过程的计算机。

目标机:运行编译结果(可执行文件)的计算机。

 

一般情况下,主机和目标机是同一类型的计算机,这就是正常的编译,没有什么好说的。所谓交叉编译就是在主机上为目标机编译,比如在PC上编译,然后在手机上运行,这种编译就叫交叉编译。

 

交叉编译需要交叉编译器,不同的目标机(主要是看芯片类型)需要不同的交叉编译器,比如我们这里要介绍的arm-linux交叉编译,所用的交叉编译器就是arm-linux-gcc系列。

 

构建一个交叉编译器(toolchain),说简单也简单,说复杂也复杂。原理上很简单,实际情况常常比较复杂,原因是编译器一直处于开发状态,你要了解某个版本的稳定性,要去找patch。有时候还要看你的运气好不好,折腾一个星期才搞定也是很常见的。

 

网上已经有不少已经构建好了的交叉编译器(toolchain),除非你想了解如何构建交叉编译器,否则直接下载一个来用是比较明智的做法。这里不打算介绍如何构建交叉编译器的知识。

 

在做交叉编译前,你最好了解autoconf系统工具的用法,遇到问题时,可以快速定位。先找一本autoconf的书看看,可以说是磨刀不识砍柴功,否则后面会浪费更多的时间。


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