1、准备编译环境,Linux中绝大多数软件的源码都是用C语言写的,少部分用C++或其他语言编写。因此想要编译源代码需要先按照gcc编译器和gcc-c++编译器。
# 安装编译器和常用库
yum groupinstall -y "Development tools"
yum install -y gcc gcc-c++ autoconf automake make
yum instlal zlib zlib-devel openssl openss-devel pcre pcre-devel
2、获取源码包
# 网络下载源码包,源码包一般是tar压缩包格式,通俗称之为tarball。
# 如nginx源码包
wget http://nginx.org/download/nginx-1.18.0.tar.gz
3、解压
# 解压tarball
tar xvf nginx-1.18.0.tar.gz -C /tmp
4、编译环境检查
软件开发者会写好一个检查环境的程序放在tarball中,通常叫做configure或者config。主要功能的有:
- 检查是否有合适的编译器可以编译本源码。
- 检查是否已经存在该软件所需的依赖库,或其他需要的软件。
- 检查操作系统是否适合该软件,包括Linux的内核版本。
- 检查内核的表头定义文件(header include)是否存在。
- 定义安装时的功能选项。
- 把系统环境的检查结果和定义好的功能选项写入Makefile文件,后续的编译和安装都需要依赖这个文件。
# 进入源码包,运行configure
cd /tmp/nginx-1.18.0/
./configure --prefix=/usr/local/nginx-1.18.0
# 常用选项有:
--prefix=/usr/local/PATH # 定义安装路径
--enable- # 启用某功能
--disable- # 禁用某功能
--help # 查询帮助信息
一般情况下,都应该将软件安装至/usr/local目录下以程序包名+版本号命名的目录中,这样方便统一管理。
5、编译和编译安装
编译和编译安装都是使用make这个命令,make会调用编译器,并读取Makefile文件中的信息进行系统软件编译。
make # 编译
按Makefile文件编译,可以使用-j选项指定多颗CPU编译。
make install # 编译安装
# 通常为了方便,我们可以将两条命令写一起
make && make install
整个过程不保错,即为安装成功。
安装过程中,如果出现 ”error“ 或 ”warning“ 且安装过程停止,表示安装失败。如果仅出现警告信息,但安装过程还在继续,这并不是安装失败,顶多使软件部分功能无法使用。
如果在执行 “./configure” 或 ”make“ 编译中报错停止,通常情况下都是因为缺少某些依赖库,按报错信息安装依赖库即可。然后在重新执行 “./configure” 之前,要先运行 make clean 命令,它会清空Makefile文件或编译产生的 ".o" 头文件,清空后再编译安装。
卸载源码安装的软件包
在安装源码包时,我们指定了安装路径为/usr/local目录下,源码包的卸载只需要找到软件的安装位置,直接删除其所在目录即可,不会遗留任何文件。需要注意的时,在删除前应先将软件停止服务。
rm -rf /usr/local/nginx-1.18.0