build.sh交叉编译NetBSD.PDFVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
build.sh:交叉编译NetBSD Luke Mewburn, Matthew Green NetBSD 基金会 lukem@NetBSD.org,mrg@.au 译者 :不开花 概述 NetBSD 有个基础框架,它可以交叉编译包含可引导的分发媒 的整个NetBSD 套件。编译过程不需要root 权限或是可写的源码目录 。 编译过程可在多数POSIX 兼容的操作系统上进行。本文解释了为了进 行这个过程而对NetBSD 所做的修改,列举了这项工作的优势,并 绍了未来为NetBSD 交叉编译任何软件的工作。 1.介绍 NetBSD[1]是移植性最好的通用Unix 操作系统。它可自由使用 和再发行,并可广泛的运行在从现代桌面系统到可在不到一小时内编 译整个发行套件的高端服务器,再到嵌入式系统和需要几天才能编译 整个发行套件的旧机器。 在 2001 年下半年,开始了改进NetBSD 能力以使可以交叉编译 NetBSD 的工作,特别是交叉编译整个套件。这个系统称为 “build.sh”,因为这是所用脚本的名字,它是这个框架的可视前端。 NetBSD 1.6 是第一个由build.sh 制作的版本,NetBSD 项目的版 本引擎组利用它在NetBSD 1.6 的发行周期内为39 个平台交叉编译发 行套件。以前的版本发行要求发行工程师访问每个平台,或是和某个 硬件上的开发者配合。然而那种方法对于适度数量的平台(NetBSD 1.5 发布了20 种平台的二进制版本)还行,并不具有扩展性,特别是 随着NetBSD 支持的平台数增长时(2003 年 6 月为54 个)。 2.背景 2.1 NetBSD 自从NetBSD 项目于 1993年开始以来,就有可移植到众多目标平 台的目标。在设计,实现和改进方面做了一些有效的努力以使 NetBSD 容易“移植”到新的平台[4]。设备驱动程序以一种允许在 各平台间简单共享而不需代码重组[5]的方式写成。 当在与目标平台不同的主机上,确切的说是本地系统上,编译 系统时,NetBSD 源代码的可移植性并不意味着“放心使用”。 在 build.sh 之前,某个平台的NetBSD 发行版本是由某个和目标 版本号“接近”版本的操作系统上“本地”编译的。这会有异常,这 个交替过程不易于使用,也不易于自动化,并且带来各种build.sh 已处理了的限制条件。 build.sh 提供了在没有处理过的其它开源操作系统上编译 NetBSD 的通用性。 2.2 交叉编译 Unix Unix 最初是交叉编译而来,直到当本地主系统可用时,那变为 主要的开发方法并持续至今。 交叉编译是在“host”系统上运行程序来为不同的“target” 系统产生目标代码。对于系统制作者来说这不是个简单任务并且通常 不能整合进由开源操作系统所使用的操作系统编译过程(译者注:我 鸟语太烂,没理解这一句,大概是说你所用操作系统并没默认安装交 叉编译器,需要自己制作)。 可自由使用的软件项目,例如GCC [6]支持交叉编译很长时间 了,并且GCC 是NetBSD 所用的GNU 工具链的一部分,并且主要依赖 于交叉编译。 2.2.1 交叉编译的介绍 [译者注1] 一个完整的交叉编译器环境有好几个部分。除了编译器本身外, 还需要许多别的工具和文件来创建功能程序。通常编译器所需 要的的所有东西都要有。对于GNU 工具链,这包 : 编译器-gcc 汇编器-as 链接器 -ld “binutils”;size,nm,strip,ar,等等。 头文件(由NetBSD 提供) 库 (由NetBSD 和 GNU 工具链提供)。 如下是个这些都如何工作的快速预览。这对于任何编译器都是 一样的;这个示例里的详细信息来自于GCC 。 1.在源码文件上,通常是“.c”文件,C 编译器前端gcc 调用C 预处理器 cpp,产生“.i”文件。这仍是有效的C

文档评论(0)

***** + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档