软件包管理
编译、链接
概念
-
定义
- 在编辑器编辑完成的源代码是纯文本文件,而计算机可以理解和执行代码,需要通过编辑器进行编译成二进制文件;若源代码有多个文件组成或者需要调用外部程序时,编译器首先将所有文件分别编译目标文件(*.o文件,二进制文件),然后再通过链接,将所有文件串到一起;当执行目标文件时,通过链接找到并加载目标文件
-
函数库
- 系统的函数集合,用于程序自主调用内部的函数以正常运行
make
makefile
- 定义 :由于程序有很多目标文件,手动建立链接过于繁琐、复杂,通过
make
以自动生成链接程序 make
:make
需要通过 makefile 文件知道如何编译、链接源文件;由于不同系统支持的操作系统、函数库、编译器可能不一样,这时需要通过 configure 自动检测系统环境,选择并编写 makefile 以确保程序正常运行makefile
:具体内容有指定编译器、编译选项、将依赖文件链接到目标文件- configure :检测程序,检测系统环境以选择和编写 makefile 文件
- 检测内容:系统、依赖库、编译器
Tarball
概念
- 定义: Tarball 表示软件程序的压缩包,由于源代码内容大小很多,需要通过
tar
进行打包以减少容量; - 组成 :Tarball 解压缩后由 源代码 、configure 、安装说明 组成
原理
-
定义:压缩过程为打包(归档)->压缩,而打包、压缩两个过程是由打包程序、压缩程序完成
- 压缩文件后缀名
- *.Z:由 compress 程序压缩的文件(已过时)
- *.zip、*.gz 、*.bz2 :由 zip 、gzip 、bzip2 程序压缩的文件
- *.xz : 由 xz 程序压缩的文件
- *.tar :由 tar 程序打包的数据,还没有被压缩
- *.tar.gz 、*.tar.bz2 、*.tar.xz :由 tar 程序打包的数据,并通过 gzip 、bzip2 、xz 程序压缩
- 压缩文件后缀名
-
tar
- 定义 :将多个文件/目录打包成一个文件,无其他功能
-
压缩程序
-
类型 :gzip 、bzip2 、xz
- 压缩程度 :xz >bzip2 >gzip
-
gzip
- 定义 :压缩成 *.zip 文件,默认删除源文件,适用于快速压缩
- 语法
gzip
[option] [filename]- 选项
-k
:保留文件-d
:解压文件-1~9
:压缩级别,越大压缩程度越大,默认为-6
-l
:显示压缩文件的压缩率(压缩文件/源文件)-f
:强制覆盖已有文件
-
bzip2
- 定义 :压缩率比
gzip
高,但速度慢,适用于大文件压缩 - 语法
bzip2
[option] [filename]- 选项
-k
:保留文件-d
:解压文件-1~9
:压缩级别,越大压缩程度越大,默认为-6
-t
:检测文件完整性-v
:压缩文件后显示压缩率
- 定义 :压缩率比
-
xz
- 定义 :压缩率比
bzip2
高,速度最慢;支持多线程加速 xz
[option] [filename]- 选项
-k
:保留文件-d
:解压文件-1~9
:压缩级别,越大压缩程度越大,默认为-6
-t
:检测文件完整性-v
:压缩文件后显示压缩率
- 选项
- 定义 :压缩率比
-
gzip file.txt # 压缩
gzip -k9 file.txt # 压缩级别为9,压缩并保留文件
gzip -d file.txt # 解压