使用包管理方式安装软件与编译源代码的区别,包管理方式提供的(以rpm为例)软件大多只保留了一部分常用功能,如果我们需要使用软件其它功能而rpm包没有,这咱情况下就需要编译源代码了。编译源代码的方式安装的软件,可以自由选择安装那些功能,而rpm是固定好的。源代码安装选择功能的灵活性好,rpm包安装则比较简便。而且大多数情况下,软件以源代码方式发行比rpm包要快。
源代码的获取方式,
编译源代码安装软件依赖开发环境,编译c程序需要gcc编译器,编译c++需要gcc-c++编译器,如果没有,需要安装。使用yum或rpm安装。
make 工具,为了维护源代码方便,一个代码稍多的软件可能分为多个文件,而编译时他们之间有相互依赖的关系,编译时必须有先后顺序。程序开发者会用项目管理工具(make),用这个工具为make提供一个配置文件,这个配置文件中描述了make如何调用gcc和这些文件的先后编译顺序。
configure 脚本文件,此文脚本件用会检查编译环境,人为设定需要启动软件那些功能,安装在那个目录等。
configure 支持的选项,每个软件略有不同。常用的有
--help 获取帮助
--prefix=/PATH 指定软件安装路径。
--sysconfdir=/PATH 指定安装软件的配置文件所在目录
--enable-特性名称 启用某个特性或选项,启用某个特性可能依赖额外开发环境。
--disable-特性名称 禁用某个特性
--with-FUNCTION 或 --with=/lib/filename 指定依赖的功能或特定路径下的文件。
--without-FUNCTION
编译安装源代码的顺序,
解压下载的软件包-->cd到解压后的目录-->./configure设定编译选项-->make(编译程序)-->make install(把编辑好的程序放到指定目录)
示例:编译安装nginx软件过程
# ./configure --prefix=/usr/nginx --conf-path=/etc/nginx/nginx.conf
报错
./configure --prefix=/usr/nginx --conf-path=/etc/nginx/nginx.conf --without-http_rewrite_module
确认没有报错
#make
确认没有报错
#make install
查看配置文件的目录
查看nginx安装目录
启动nginx服务
#/usr/nginx/sbin/nginx &
#ss -tnlp
为了让nginx像rpm安装的程序一样,需要做以下操作
定义PATH环境变量,在/etc/profile.d/建一个文件名为nginx.sh。内容是export PATH= $PATH:/usr/nginx/sbin
添加man手册,给/etc/man.conf文件中添加
MAN /手册所在的位置
如果其它其它程序依赖此程序的开发环境,则需要把此程序的库和头文件导出
编辑/etc/ld.so.conf.d/nginx.conf,在此文件中添加库文件路径,一行一个库文件路径。然后执行ldconfig触发新成生库文件在所在位置,导出头文件只能创建链接,把此软件所在库的目录链接到/usr/include/下。