构建交叉编译工具链

本文详细介绍了构建交叉编译工具链的过程,包括使用Buildroot自动构建和手动构建的方法。讨论了交叉编译工具链的组成部分,如编译器、汇编器、链接器和C标准库,以及它们在嵌入式Linux开发中的角色。同时,解释了为何需要交叉编译,以及如何确定目标、选择合适的软件版本、组织工作目录和编译各个组件。
摘要由CSDN通过智能技术生成

构建交叉编译工具链

部分摘自《 Building Embedded Linux Systems 》作者: Karim Yaghmour
刘建文略译并整理( http://blog.csdn.net/keminlau

KEY: 交叉编译 嵌入式 Linux C库 glibc

Buildroot自动构建交叉编译工具链

在过去很长的一段时间里,构建一套交叉编译工具链对于嵌入式开发者来说简直是一场恶梦,因为他们得手动跟踪各种源码包(及其更新包)之间的依赖关系。buildroot,和有名的微型C库——uclibc一起发布的小工具改变这一事实。

为啥复杂

Configuring and building an appropriate GNU toolchain is a complex and delicate operation that requires a good understanding of the dependencies between the different software packages and their respective roles. This knowledge is required, because the GNU toolchain components are developed and released independently from one another.

 

Buildroot是像Linux内核构建系统 类似的基于GNU make的软件构建系统。不过,Buildroot只包含构建所需的Makefiles和一些patches,没有待构建软件的源码,源码必须从网上动态下载。Buildroot主要是就用来构建[使用uClibc的交叉编译工具链 ]和根文件系统。

什么叫使用uClibc的交叉编译工具链?

 

首先要理解什么是编译工具链。编译工具链可简单理解为编译工具集,包括编译器、汇编器、链接器和C标准库。编译器负责将源代码转换为二进制机器码(或汇编代码),像gcc;汇编器和链接器等则负责【可执行文件】的构建,像binutils,中文为二进制工具集;C标准库是通用的机器码库,供链接器用,像 glibc。 从参与编译构建任务的角色看,前三者是【器具】,有操作的;最后者C库是【数据材料】。

接着理解什么是交叉编译。交叉的前提主机(HOST)与目标机(TARGET)使用不同的CPU体系,编译在主机上进行,生成目标机的机器码 。交叉编译工具链与本地编译工具链的区别,第一,交叉编译工具链的【编译器具】具有生成目标机机器码的功能;第二,交叉编译工具链的【C库】是目标机机器码库。

最后理解何为【使用uClibc的交叉编译工具链】变得很显然了。

此步引申出几个问题,第一,【编译器具】具有交叉编译性质需要做些什么?第二,目标机机器码C库如何生成?第三,uClibc与glibc的不同体现在哪里?

 

使用Buildroot

  • 创建你自己的载板支持(board support)
  • 离线构建
  • 源码树外(out of tree)构建
  • 环境变量
  • 目标机的根文件系统的定制
  • Busybox定制
  • uClibc定制
  • 创建基于单一buildroot源码树的多个项目
  • 于buildroot外使用uClicb工具链
  • 源码包的下载位置
  • 使用外部工具链
  • 扩展buildroot(工具软件部分)

使用详细请查看buildroot文档

手动构建交叉编译工具链

既然有了buildroot,还有必要学习如何构建工具链吗?答案当然有必要。我们是不建议重复发明轮子的,但如果我们不自己发明一次,我们永远不知道轮子是怎么来了。从职业的角度看,应该说不建议对外行的事物重新发明。

[嵌入式Linux开发 ]的第一步是构建(能编译运行在目标机平台的内核和应用程序的)交叉编译工具链,而[嵌入式Linux开发]第一步的第一步,是已经有一个生成这个交叉编译工具链的[本地工具链 ](native toolchain);第二步,是组织项目的工作目录。

本地工具链一般随发行版安装,如果没有选择安装,或者不小心损坏,可以从发行版的CD或网上取得安装包进行重要安装即可。

工作目录

在为你的嵌入式系统开发或定制各种软件的工作过程中,你需要用到很多的源码包和工具集。为这些源码包、工具集和其它[项目相关组件]定立一个清晰易

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值