前言:
不管是rpm安装还是yum安装都是以二进制格式进行安装的,是别人编译好的程序包,我们无需再编译就能使用,但未必在所有情况下都适用,所以只能自己编译安装,通过自己编译安装可以根据自己的需求编译程序包的功能,rpm包分为编译好的rpm包,还有一种源码rpm包。
程序包编译安装:testapp-VERSION-release.src.rpm格式的rpm包安装后使用rpmbuild命令制作成二进制的rpm包,再安装。可以将此种rpm包编译制作成完全符合自己平台需要版本的程序包。
大致过程: 源代码 -->预处理 -- >编译(gcc)-->汇编 -->链接 -->执行
源代码组织格式:多文件,文件中的代码之间,很可能存在跨文件的依赖关系;所以需要项目管理工具解决这些复杂的关系。
make项目管理工具:自动调用于处理器做预处理,自动调用编译器进行编译,调用汇编器做汇编,调用链接器做链接,大大简化了我们编译安装的步骤。
mikefile文件:make的配置文件,根据不同的源代码做出不同的决定,不是事先存在的,因为对每个不同的用户来说需要是不一样的,是由configure脚本传递参数给Makefile.in,再以Makefile.in为模版生成的文件。configure脚本能够允许用户传递编译参数,启用特性,安装路径等等参数,然后再以
Makefile.in文件为模版生成makefile文件。
编译安装三步骤:
第一步: ./confiugre
(1)通过选项传递参数,指定启用特性、安装路径等,执行时会参考用户的指定以及Makefile.in文件生成makefile;
(2) 检查依赖到的外部环境
第二步: make :
根据makefile文件,构建应用程序
第三步: make install
相当于cp 命令,复制相应的文件到指定的目录
有些情况下并没有configure脚本和Makefile.in文件的存在,所i就需要一些开发工具生成这些文件
开发工具:
autoconf: 生成configure脚本文件
automake:生成Makefile.in文件
建议:安装前查看INSTALL,README文档
开源成需源代码的获取:
官方的自建站点:
apache.org
mariadb.org
代码托管:
SourceForge
Github.com
code.google.com
c/c++源代码的编译器:gcc(GNU c complier)
编译c源代码程序: ./confiugre --> make --> make install
前提:提供开发工具及开发环境
开发工具:make, gcc等
开发环境:开发库,头文件
glibc:标准库
通过“包组”提供开发组件
CentOS 6: "Development Tools", "Server Platform Development",
首先在CentOS系统上安装gcc编译器,如图:
第一步:configure脚本
选项:指定安装位置、指定启用的特性
--help: 获取其支持使用的选项
选项分类:
安装路径设定:
--prefix=/PATH/TO/SOMEWHERE: 指定默认安装位置;默认为/usr/local/
--sysconfdir=/PATH/TO/SOMEWHERE:配置文件安装位置;
System types:
Optional Features: 可选特性
--disable-FEATURE(禁用此特性)
--enable-FEATURE[=ARG](启用此特性)
Optional Packages: 可选包
--with-PACKAGE[=ARG]
--without-PACKAGE
编译安装httpd程序:
第一步:
下载httpd程序源代码
查看源代码安装包的INSTALL文件,会显示安装步骤:
第二步:
使用./configure脚本执行安装
并指明安装目录和未知文件安装位置
httpd-2.2.29]# ./configure --prefix=/usr/local/apache2 --sysconfdir=/etc/httpd2
第三步:
执行make
第三步:
执行make install
完成之后查看安装结果
第四步:
启动程序:在/apache2/bin目录下有apachectl文件是该程序的启动脚本,利用它启动程序
然后启动该程序
查看网络连接状态,如果显示80端口已经处于监听状态就表示httpd已经启动:
通过服务器就可以访问该地址
安装后的配置:
(1)导出二进制程序目录至PATH环境变量中;
编辑文件/etc/profile.d/NAME.sh
export PATH=/PATH/TO/BIN:$PATH
(2) 导出库文件路径
编辑/etc/ld.so.conf.d/NAME.conf
添加新的库文件坐在目录至此文件中
让系统重新生成缓存
(3)导出头文件
基于链接的方式实现;
ln -sv
(4)导出帮助手册
编辑/etc/man.config文件
添加一个MANPATH