1. 编译源代码步骤
configure、Makefile.in一般是项目管理器自动生成的,这依赖于两个开发工具:
autoconf:生成configure脚本文件;
autoconf需要结合一个配置文件来和其它命令生成configure脚本;这个配置文件告诉autoconf当前代码有哪些特性、指定哪些安装路径等,而后才能生成configure脚本;
automake:生成Makefile.in模板文件;
automake也要结合一个文件,这个指明有多少程序文件、它们的依赖关系是什么、以及使用哪一种版本的编译器等,而后才能生成Makefile.in;
Note:在安装之前查看INSTALL和README文件查看安装方法,因为不同程序包安装步骤不一样,有的程序包不需要configure,直接make后执行make install;而有的程序包不需要执行make install,只有一个二进制文件直接复制即可完成;
ASP站长网安装开发组件
想要进行编译,提前安装开发组件
CentOS 6:Development Tools、Server Platform Development
CentOS 7:Development Tools、Development and Creative Workstation
(1) ./configure(也可能是config文件)
--help:获取支持使用的选项;
在执行make命令之前,用户指定程序包的编译参数、启用特性、安装路径等等;
configure脚本会收集当前系统上的开发环境中所依赖各组件的版本、特性等,并检查所依赖的环境是否能满足,如果检查到所依赖的程序包不存在立即报错,无法执行下一步。最后会根据用户指定信息和Makefile.in文件生成一个makefile文件;
##通用的几个选项
--prefix= :指定安装的路径
--sysconfdir= :指定配置文件目录
--enable-feature :启用某个特性
--disable-fecture :禁用特性
--with-function :启用某功能
--without-function :禁用某功能
(2) make
每个源代码都有专用的makefile,在make时依据这个配置文件,调用指定的预处理器做处理、调用指定的编译器做处理、编译文件的顺序等操作等;
(3) make install
其实是一些脚本,实现把构建出的应用程序,分别分配到用户指定的目录中;如创建出的二进制文件放到指定的二进制目录、库文件放到指定的库目录等等,使用install拷贝命令也能实现;
2. 安装后的配置
(1) 将二进制程序目录添加至PATH文件变量中,否则只能使用绝对路径才能运行程序
编辑文件/etc/profile.d/NAME.sh
export PATH=/PATH/TO/BIN:$PATH
(2) 导出库文件路径
编辑/etc/ld.so.conf.d/NAME.conf,添加新的库文件所在的目录至此文件中;
例如:/usr/local/apache2/lib
ldconfig -v:重新加载库文件路径,并查看;
ldconfig -p:查看已加载所有库文件路径;
(3) 导出头文件
/usr/include/目录下,创建软链接;
ln -s target_dir soft_link ##可以导出一个目录为所有文件链接,也可以为每一个头文件导出一个链接,然后把创建的链接输出到/usr/include/目录下,或者直接复制头文件至/usr/include/目录;
(4) 导出man手册
Centos7是在/etc/man_db.conf的40到50行之间,添加一个MANPATH参数(Centos6可能是/etc/man.config);
MANPATH_MAP /usr/local/apache2/bin /usr/local/apache2/man
3. 编译安装实验
3.1. Centos7编译安装apache 2.2.27
系统版本与软件版本
[root@GNOME-C7 ~]# cat /etc/RedHat-release
CentOS Linux release 7.4.1708 (Core)
[root@GNOME-C7 ~]# uname -r
3.10.0-693.el7.x86_64
------------------------------------------------------------------
apr-1.6.3
apr-util-1.6.1
httpd-2.2.27
提前安装开发环境
[root@GNOME-C7 ~]# yum groupinstall -y "Development tools" "Development and Creative Workstation"
3.1.1. 安装apr-1.6.3
[root@GNOME-C7 ~]# cd apr-1.6.3/
root@GNOME-C7 apr-1.6.3]# ./configure -prefix=/usr/local/apr-1.6.3
[root@GNOME-C7 apr-1.6.3]# make
[root@GNOME-C7 apr-1.6.3]# make install
3.1.2. 安装apr-util-1.6.1
[root@GNOME-C7 apr-1.6.3]# cd ../apr-util-1.6.1/
[root@GNOME-C7 apr-util-1.6.1]# ./configure -prefix=/usr/local/apr-unil-1.6.1 --with-apr=/usr/local/apr-1.6.3
[root@GNOME-C7 apr-util-1.6.1]# make
遇到报错:
xml/apr_xml.c:35:19: fatal error: expat.h: No such file or directory
#include <expat.h>
^
compilation terminated.
make[1]: *** [xml/apr_xml.lo] Error 1
make[1]: Leaving directory `/root/apr-util-1.6.1'
make: *** [all-recursive] Error 1
解决方法:yum install -y expat-devel
[root@GNOME-C7 apr-util-1.6.1]# make install
大型站长资讯类网站! https://www.0792zz.cn