编译安装: RPM YUM
RPM,一键安装,方便,二进制程序,但存在一下问题:
1:功能不齐全,功能冗余
2:版本滞后
因此我们需要自己定制软件包:源代码编译为安装应用程序
编译环境:
gcc:GNU C Complier
gcc-c++:
安装编译环境: # yum -y groupinstall "Development Tools"
automake:生成Makefile.in(半成品)文件
autoconf:生成脚本文件configure,在源代码目录中
make:最终使用make进行编译,但其本身并不是编译器,是项目管理工具,按照Makefile文件中的定义的顺序去编译。
执行编译安装步骤:
1:获取源代码并解压:
# tar xf xxx.tar.gz
# tar xf xxx.tar.bz2
2:执行configure脚本(在源码目录中运行),及错误处理
功能:1:检查应用程序所需要的编译环境 2:生成Makefile 3:定制应用程序功能
选项:--help:查看该脚本帮助信息
--prefix=PATH:定义应用程序安装路径
--sbin-path=PATH:定义应用程序的二进制程序路径
--conf-path=PATH:定义应用程序配置文件路径
--enable--XXXX:开启某项功能(如应用程序支持该功能,但默认不安装)
--disable--XXX:关闭某项功能(如应用程序支持该功能,默认安装,但是用户不需要)
--with--XXX:开启某项功能(如应用程序支持该功能,但默认不安装)
--without--XXX:关闭某项功能(如应用程序支持该功能,默认安装,但是用户不需要)
--user=USER:指定应用程序执行的用户
--group=GROUP:执行应用程序执行的组
解决configure错误信息
1:用without关闭这项功能
2:安装所需的环境,安装所需环境的devel包
3:make:按照Makefile文件定义的顺序去编译源程序
-j N:多个线程一起编译
4:make install:安装应用程序
编译安装完成后工作:
1、添加应用程序的二进制程序到系统路径: 系统查找 $PATH
1.1:为二进制程序做链接文件,如: 缺点:占用inode值
# ln -s /usr/local/tengine/sbin/* /usr/sbin(文件数量较少时采用)
# ln -s /usr/local/tengine/sbin /usr/sbin/tengine(文件数量较多时采用)
1.2:修改/etc/profile文件,如添加如下内容:
PATH=$PATH:/usr/local/tengine/sbin
然后使其生效:source /etc/profile
1.3:在/etc/profile.d/目录中建立name.sh的文件,添加如下类似内容:
PATH=$PATH:/usr/local/tengine/sbin
重新登录生效
2、添加应用程序的库文件到系统库/usr/lib /usr/lib64:
2.1:为库文件做链接文件
# ln -s /usr/local/APP_NAME/lib/* /usr/lib
# ln -s /usr/local/APP_NAME/lib /usr/lib/APP_NAME
2.2:在/etc/ld.so.conf.d/目录下建立APP_NAME.conf,把应用程序的库文件位置添加进去:
/usr/local/app_name/lib
执行如下命令生效:
ldconfig
-v:显示加载库文件过程
3、添加用用程序的头文件到系统头文件 /usr/include:
3.1:为头文件做链接文件
# ln -s /usr/local/APP_NAME/include/* /usr/include
# ln -s /usr/local/APP_NAME/include /usr/include/APP_NAME
4、添加应用程序的帮助信息:
4.1:man -M PATH bin_name,只是查询,并没有添加
-M:指定帮助信息的位置
4.2:man配置文件:系统默认帮助/usr/share/man
CentOS6:/etc/man.conf添加:
MANPATH [help_path]
CentOS7:/etc/man_db.conf添加:
MANPATH_MAP [help_path]