使用包管理方式安装软件与编译源代码的区别,包管理方式提供的(以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  

报错

egret源码修改编译_运维

./configure --prefix=/usr/nginx --conf-path=/etc/nginx/nginx.conf --without-http_rewrite_module

确认没有报错

#make

确认没有报错

#make install

egret源码修改编译_nginx_02


查看配置文件的目录

egret源码修改编译_nginx_03

查看nginx安装目录

egret源码修改编译_运维_04


启动nginx服务

#/usr/nginx/sbin/nginx &

#ss -tnlp

egret源码修改编译_配置文件_05


为了让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/下。






转载于:https://blog.51cto.com/wukui/1440093