构建自己的Linux系统记录(四)

来源:互联网 发布:淘宝三阶魔方 编辑:程序博客网 时间:2022/05/28 05:47

首先建立预工具链

先编译生成汇编连接器Binutils,然后编译生成编译器GCC。按照书上操作即可,遇到编译错误,我采取的方法是把解压的文件全部删除,然后重新执行,确定每步命令的正确。

其中提到了几个命令
CC

make中常用到的环境变量,CC指定使用C程序的编译器,CXX指定使用C++的编译器,CFLAGS,CXXFLAGS分别设置传递给编译器的参数

make

这是一个很强大编译工具,以后有机会在仔细学习吧
在这本书中常用到的命令有 make clean ,清除.o
make install,安装软件
make mrproper ,清除代码中多余的内容

在编译GCC的时候用到了Bootstrap编译方式,

因为GCC可以支持很多语言,C语言是最基本的,在编译过程必须带有,Bootstrap就是先由主系统的gcc编译生成C语言的编译器(I),然后由新生成的C语言的编译器再编译生成新的编译器(II),再由编译器(II)编译生成编译器(III),最后比较(II)和(III),相同则编译成功,然后再编译其他语言的支持。

然后建立临时工具链

要先编译内核的头文件,

因为编译基本C库的时候要用到

编译基本C库

Glibc是GNU Library C 保证了程序和内核之间的调用

在编译过程用到了march设置架构,mtune设置优化的架构

configure

对编译进行配置,生成Makefile
--prefix=/tools 指定编译到的文件名

调整工具链

使接下来的编译使用刚刚编译好的Glibc

find

*是通配符,包含所有文件,除了以 . 开头的文件,-maxdepth 指定搜索的深度, -xtype 指定文件类型,-exec 指定搜索完成执行的命令

编译汇编工具和GCC

预工具链中汇编工具和编译工具还依赖主系统中的Glibc

patch应用补丁

编译测试工具集 Tcl,Expect,Dejagnu

Tcl是工具控制语言的缩写 (Tool control Language)
Expect实现自动和交互任务进行通信
DejaGNU 包含了测试其他程序的框架
不明觉厉

临时系统的构成

这其中包含大量的工具,只要按照书上的操作执行即可,遇到错误删掉重新执行,直接覆盖可能还会继续报错

sed

这是经常用到的一个命令,后面总是跟着一串复杂的表达式,书中介绍可以配合diff比较两个文件(原文件和用sed新产生的文件)的不同,来观察sed的命令的作用,我选了一个比较简单的sed命令进行了比较

我找到了一篇比较详细的教程http://www.cnblogs.com/fgds/archive/2012/02/14/2350839.html

grep

这也是一个比较常见的命令,他可以用正则表达式搜索文本,并将匹配的行打出来
http://www.cnblogs.com/end/archive/2012/02/21/2360965.html

strip

清理临时系统要用到的命令,
--strip-all ,删除所有符号和定位信息
--strip-debug,删除所有调试符号和调试片段
--strip-unneeded,删除所有符号及不需要的定位信息

退出临时系统制作用户

exit

现在临时系统就已经构建完成了,接下来就需要开始建立目标系统了

0 0
原创粉丝点击