Linux 下使用 Tarball 安装软件

使用源码安装软件。

什么是软件

在 Windows 下,后缀名为 .exe 的文件就称之为软件。

而在 Linux 下,能被机器执行的文件就可以叫做软件,不过 .sh 文件不是软件,它可以被执行,但本质上,机器执行的还是 bin 目录下 bash 这个软件,.sh 是由 bash 执行的,这有点像录音机和磁带的关系。

电脑上有很多软件,即使你没有装过一个软件,也有很多自带的软件供我们使用。

上次装的 Python 就是一个软件,因为我们可以执行它。

知道了什么是软件,那么软件从何而来呢?答案是从源码而来,如果对C语言有所了解,就容易理解。一个 .c 源文件,编译链接之后就得到一个可执行的文件,也就是软件。

一开始,我们希望实现某个功能,于是使用C语言的语法编写源码,但是机器是看不懂源码的。所以就要使用编译程序进行编译,目的是让机器能看懂我们说的是什么,然后按照我们说的去做。至于链接这一步,是由于我们的程序使用了“其它软件提供的某些函数”,在生成可执行文件之前,需要把这些用到的东西链接起来。最后得到了可以运行的软件。

configure 和 make

源码变成软件需要经过编译程序的编译和链接,而这个编译程序就叫做 gcc,在终端输入:

1
gcc -c a.c

就会运行 gcc 这个软件,gcc 后面的内容时告诉编译程序要编译的是哪个文件。

至于链接:

1
gcc -o a a.o b.o c.o

-o 后面是生成的软件的名字,以及要链接的目标文件,根据实际情况,可能要链接很多个 .o 结尾的文件。

如果每次都要输入一大堆东西,岂不是很麻烦?于是就有了 make 这个工具,创建一个 makefile,然后预先编写好编译和链接的规则,真正编译时只需要一句:

1
make

这样是不是方便多了?不过这样还存在问题,不同的 Linux 发行版本里,文件的放置的位置不一样,另外不同机器的硬件环境也不一样,这样一来,预先编写一个通用的 makefile 就不现实。

所以 configure 就是来解决这个问题的,它会根据实际情况来生成 makefile,确保最后得到的软件可以在当前机器上运行。

Tarball 是什么

其实就是将所有源文件打包之后压缩得到的文件,如果不压缩就会使得下载源码的时间变得更长。

Tarball 的后缀可能是 *.tar.gz、*.tgz 或者 *.tar.bz2 等。

将它解压之后就会得到:

  • 源码
  • 检测程序文件(也就是上面说的 configure 了)
  • 本软件的介绍和安装说明

安装流程

  • 下载 Tarball
  • 解压 Tarball(建议解压到 /usr/local/src 目录下)
  • 进入解压目录,执行 configure 脚本,生成 makefile
  • 执行 make 进行编译
  • 执行 make install 进行安装(就是将编译好的软件复制到指定目录)

这样安装的前提是具有 gcc 和 make 这两个软件。

具体例子看上一篇博客。