一、相关知识
1、GCC是一个用于linux系统下编程的编译器。GCC原本只能处理C语言,但后来扩展到可处理C++,之后也可处理Fortran、Pascal、Objective-C、Java、Ada,以及Go与其他语言。它主要完成的工作任务是“预处理”和“编译”,以及提供了与编译器紧密相关的运行库的支持。(注意它所提供的库,以便于当安装软件时,可以知道缺少的是gcc提供的库还是Glibc提供的库)。
GCC安装后系统包含的内容如下:
2、Glibc
glibc是gnu发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。由于 glibc 囊括了几乎所有的 UNIX 通行的标准,可以想见其内容包罗万象。Glibc提供的必要功能主要的如下:
(1)string,字符串处理
(2)signal,信号处理
(3)dlfcn,管理共享库的动态加载
(4)direct,文件目录操作
(5)elf,共享库的动态加载器,也即interpreter
(6)iconv,不同字符集的编码转换
(7)inet,socket接口的实现
(8)intl,国际化,也即gettext的实现
(Array)io
(10)linuxthreads
(11)locale,本地化
(12)login,虚拟终端设备的管理,及系统的安全访问
(13)malloc,动态内存的分配与管理
(14)nis
(15)stdlib,其它基本功能
Glibc安装后,提供的工具及库如下:
3、binutils
binutils提供了一系列用来创建、管理和维护二进制目标文件的工具程序,如汇编(as)、连接(ld)、静态库归档(ar)、反汇编(objdump)、elf结构分析工具(readelf)、无效调试信息和符号的工具(strip)等。通常,binutils与gcc是紧密相集成的,没有binutils的话,gcc是不能正常工作的。
binutils安装后提供的工具及库如下:
二、安装与升级的思考
(最好是三者版本相匹配)
1、关于安装
从上边的介绍以及安装LFS的理解来说,这三个之间的依赖关系非常紧密,很难说清哪个先哪个后,就是鸡蛋与鸡的问题。但是,安装的时候肯定是要借助于另外的系统或者是工具链(gcc,glibc,binutils以及内核头文件)。如果是这样的话,就好办了,一般是这样的顺序:先安装binutils, 然后Gcc, 内红头文件,glibc。 最后要注意,要调整安装的这三个工具(即工具链),使gcc和binutils依赖glibc。
2、关于升级
升级的话,需要哪个直接安装就可以了,但是一定要注意,安装之后一定要调整好三者之间的依赖关系,尤其是glibc的安装和依赖关系的调整。如果升级两个以上软件,则要参考1部分。