返回
首页 > 论文范文
2 页 客服微信号: bylw8com 客服QQ:3346581880

LFS构造原理的分析

摘 要:随着Linux用户的增加,越来越多的人愿意自己定制自己的操作系统,LFS就是一种流行的从源代码构建Linux的一种。本文该方法的构建原理,重点分析了Binutils、Gcc和Glibc在构建过程种编译多次的原因。

关键词:定制 LFS Binutils Gcc Glibc
一、引言

Linux 是和 Unix很相似的一种操作系统,具有Unix的全部特征,并和POSIX兼容。它是一个真正的多用户多任务操作系统,是一个优秀的软件开发平台。Linux最大的特点是它是自由的,这种自由有双重含义。一方面, Linux的自由的意义是它是免费的,不必花费成本就可以得到它。Linux自由还有另一个重要的体现,那就是Linux 可以提供无限宽广的技术发挥的自由空间。在购买到Linux之后得到的不仅仅是一个操作系统,还得到了系统的源代码。这样如果不喜欢Linux 的工作方式,就可以改变它(不仅仅是做微小的改动,你甚至可以安装你的需求去改动整个操作系统)。只要按照通用公共许可证(General Public License)的要求,即可以无偿地自由采用,改进,。这也正是Linux发展如此迅速的一个原因。

开放源代码,也使越来越多的人不甘于使用现成的发行版,要想对Linux完全满意,必须从头构建自己的系统。本文的LFS正是构造Linux的一个方法。

二、LFS及其特点

LFS是Linux From Scratch的缩写。"From Scratch"是一个词组,它的意思是"从零做起,白手起家,从无到有"的意思,因此"Linux From Scratch"本质上不应当理解为一个Linux发行版名称。它最贴切的含义应当是一种"方法/思想":一切从源代码开始的方法/思想。如果把 LFS 比作建筑房子,那么LFS 提供房子的框架蓝图,但是需要你自己建造它。

使用现有的 Linux 系统来开发自己定制的系统,这个"完美的"Linux 系统将拥有各种发行版的优点而没有它们的缺点。用户可以控制系统的所有特征,包括目录布局、脚本设置和安全设置等等。最终的系统将从源代码直接编译生成,用户可以指定在哪里安装、为什么安装以及怎样安装每一个程序。可完全按照自己的需求定制Linux 系统,而且对系统有更多的控制权。

三、LFS的好处

LFS 存在的一个重要原因是可以帮助人们 Linux 系统内部是如何工作的。构建一个 LFS 系统会帮助演示是什么使 Linux 运转,各种组件如何在一起互相依赖的工作。最好的事情是通过这种学习可以获得完全根据自己的需求定制 Linux 系统的能力。

LFS 的一个关键的好处是它让用户对于系统有更多的控制,而不是依赖于他人的 Linux 实现。在 LFS 的世界里,你自己坐在司机的位置,掌控系统的每一个细节。

LFS 的另一个好处是可以创建一个非常小巧的 Linux 系统。当安装一个常规的发行版时,人们经常要被迫安装一些可能永远不会用到的程序。这些程序浪费宝贵的磁盘空间,更糟的是占用 CPU 资源。自己定制 Linux 系统的另一个好处是安全性。通过从源码编译整个系统,你能够审查任何东西,打上所有的安全补丁,而不需要等待别人编译好修补安全漏洞的二进制包。除非是你发现并制作补丁,否则你无法确保新的二进制包被正确编译并修正了。

四、LFS的构造原理

要基于源代码的方式来编译整个系统,那首先要解决的就是工具链的问题,即需要一个编译环境。所以构造LFS系统分两大步:一是构造一个临时的编译环境;二是构建LFS系统。

临时编译环境其实也相当于一个小的 Linux 系统。只不过这个系统将仅包含必要的工具,能够构建最终的LFS系统。构建这个小系统分两步进行,第一步是构建一个新的不依赖于宿主系统的工具链(编译器、汇编器、连接器、库文件以及一些有用的软件),第二个步骤是利用这个工具链去构建其它基本的工具。

在工具链中最基本的是:Binutils、GCC和Glibc。Binutils 是一组开发工具,包括连接器,汇编器和其它用于目标文件和档案的工具。GCC 软件包包含 GNU 编译器,其中有 C 和 C++ 编译器。 Glibc 包含了主要的C库。这个库提供了基本的例程,用于分配内存、搜索目录、打开关闭文件、读写文件、字串处理、模式匹配、数学等等。其它的工具必须在他们的基础上建立。所以在下面讲解的过程主要围绕着这三个工具的安装,以及工具链的调整为主。


那么如何来创建一个这样的编译环境呢?那就需要一个现成的系统,称它为宿主系统。现在总体的思路就是在宿主系统创建一个临时的环境,可以chroot到这个环境,在该环境的基础上构建一个干净、没有的LFS系统。为了尽量的与宿主系统分开,所以要创建一个自包含、自依赖的工具链。由于这里的工具链只起临时作用,在完成LFS后可以将其剥离,所以可将编译的所有文件都放在同一个文件中($LFS/tools)。在构建过程中应注意以下几点:
 1 2 下一页 尾页

猜你喜欢

版权所有 Copyright©2006-2024 毕业论文网 版权所有

苏ICP备14005682号

联系邮箱:Lw54@vip.qq.com