一、什么是LFS LFS 是Linux From Scratch的缩写。"From Scratch"是一个词组,它的意思是"从零做起,白手起家,从无到有"的意思,因此"Linux From Scratch"本质上不应当理解为一个Linux发行版名称。它最贴切的含义应当是一种"方法/思想":一切从源代码开始的方法/思想。如果把 LFS 比作建筑房子,那么LFS 提供房子的框架蓝图,但是需要你自己建造它。 二、LFS的构造 要基于源代码的方式来编译整个系统,那首先要解决的就是工具链的问题,即需要一个编译环境。所以构造LFS系统分两大步:一是构造一个临时的编译环境;二是构建LFS系统。 注:以下列表基于LFS-7.6整理 2.1、构造临时的编译环境 临时编译环境其实也相当于一个小的 Linux 系统。只不过这个系统将仅包含必要的工具,能够构建最终的LFS系统。构建这个小系统分两步进行,第一步是构建一个新的不依赖于宿主系统的工具链(编译器、汇编器、连接器、库文件以及一些有用的软件),第二个步骤是利用这个工具链去构建其它基本的工具。
在工具链中最基本的是:Binutils、GCC和Glibc。Binutils 是一组开发工具,包括连接器,汇编器和其它用于目标文件和档案的工具。GCC 软件包包含 GNU 编译器,其中有 C 和 C++ 编译器。Glibc 包含了主要的C库。这个库提供了基本的例程,用于分配内存、搜索目录、打开关闭文件、读写文件、字串处理、模式匹配、数学计算等等。其它的工具必须在他们的基础上建立。编包顺序依次如下表所示:
由上表发现binutils和gcc编译了两次。原因第一遍是编译独立的环境,第二遍是用编好的环境编译独立的系统,一切只为了与宿主系统脱离关系。
2.2、构造LFS系统 chroot到一个新环境,使用上面构建的临时编译环境开始编译真正的系统。编包顺序如下:
三、kylin编包 沿用2.1中的编包顺序,将2.2里2.1中未涉及的包追加
binutils gcc kernel glibc libstdc++ tcl expect dejagnu check ncurses bash bzip2 coreutils diffutils file findutils gawk gettext grep gzip m4 make patch perl sed tar info util-linux-ng xz man-pages zlib gmp mpfr pkgconfig attr acl libcap shadow-utils psmisc procps e2fsprogs setup flex bison readline bc libtool gdbm expat net-tools iputils ftp tftp telnet traceroute perl-XML-Parser autoconf automake intltool gperf groff grub less iproute kbd module-init-tools upstart udev man vim
|