基于c语言的源代码编译安装,通常有三个步骤
./configure
(1)通过选项传递参数,指定启用特性,安装路径等:执行时会参考用户的指定以及makefile.in文件生成makefile.
(2)检查依赖到的外部环境;
make:根据makefile文件,构建应用程序:(make是真正构建项目成为二进制程序的一个关键步骤,但make自己不是编译器,他是调用gcc来完成编译的,所以说make只是一个项目管理工具,而这个项目管理工具依赖与makfile,l来完成项目构建,而makefile又不能写死,所以这个时候依赖与configure脚本结合程序员事先写好的模版Makefile.in,让用户自己指定选项以后执行生成
makeinstall(makeinstall其实就是把编译好的文件复制到configure指定的安装路径下去)
configure,和makefile.in是由项目构建工具生成的,但是有些应用程序的编译安装不会自带,所以得手动生成,而这依赖于以下两个开发工具; 开发工具:
autoconf:生成configure脚本
automake:生成makefile.in
对与不同的应用程序,他的configure脚本肯定是不一样的,因为对不同的应用程序他的参数和特性不一样。所有autoconf需要结合一个配置文件去生成一个configure脚本,这个配置文件是用来告诉autoconf当前的这个开发的代码他需要有那些功能,是用来做特性使用的。automake也是如此,这就意味着不同程序的安装步骤是不一样的,有些程序需要configure脚本,有些程序不需要。所有建议安装源代码程序时注意查他的install文档,建议:安装前查看install文档,readme文档
准备工作
开源程序源代码的获取:
官方自建站点:
apache.org(ASF)
mariadb.org
代码托管:
sourceforge
github.com
code.google.com
提供开发工具及开发环境(chentos 5 6 7 通过“包组”提供开发组件,本次安装是在centos6操作系统下完成的)
centos 6 的标准开发组件有两个"Development toos","server platfrom development"
开发工具:make ,gcc等等
开发环境:开发库,头文件
安装"Development toos","server platfrom development"
]#yum groupinstall "Development toos" "server platfrom development"
第一步:./configure脚本
选项:指定安装位置,指定启用特性
–help:获取其支持使用的选项
选项分类:
安装路径设定:
–prefix=path/to/somewhere:指定默认安装位置;默认为/usr/local
–sysconfidir=/path/to/somewhere:配置文件安装位置
optional features:可选特性
–disable-feature
–enable-feature[=arg]
optional packages:可选包
–with-package[=arg]
–whithout-package
下载并解压httpd-2.2.29.tar
]#tar xvf httpd-2.2.29.tar.bz2
cd至httpd2.2.29目录
安装前查看INSTALL,README文档
INSTALL,README文件是该程序的安装文档信息等内容
]#less INSTALL ]#less README
执行./configure –prefix=/usr/local/apache –sysconfdir=/etc/httpd命令,指定安装位置和配置文件位置
]#./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd
第二步:make
执行make根据makefile文件,构建应用程序
]#make
第三步:make install
]#make install
cd到/usr/local/apache目录,查看安装结果查找到bin目录下的apachectl(这是一个脚本,可以控制启动apachectl服务的)。并且执行bin/apachectl start命令开启服务,使用netstat -tan 查看80端口属于监听状态及表示服务已经开始运行。
自定义编译安装之后,将其整体安装在了/usr/local/*文件下,卸载时只需删除该文件夹即可。
但是,此时系统路径是无法读取该配置文件的,所以服务可能无法启动,需要配置其部分文件。
/usr/local/apache]#ls bin ab apr-1-config apxs dbmmanage envvars-std htdbm htpasswd httxt2dbm rotatelogs apachectl apu-1-config checkgid envvars htcacheclean htdigest httpd logresolve
安装后的配置
(1)导出二进制程序目录至path环境变量中
编辑文件/etc/profile.d/name(以程序名命名).sh输入export path=/payh/to/bin:$path
]#vim apaceh.sh ]#cat apaceh.sh export PATH=$PATH:/usr/local/apache/bin
(2)导出库文件路径
编辑/etc/ld.so.conf.d/name.conf
添加新的库文件所在目录至此文件中;
]#vim /etc/ld.so.conf.d/apache.conf ]#cat /etc/ld.so.conf.d/apache.conf /usr/local/apache/lib
让系统重新生成缓存
执行ldconfig[-v]命令
]#ldconfig -v /usr/local/apache/lib: libexpat.so.0 -> libexpat.so.0.5.0 libapr-1.so.0 -> libapr-1.so.0.5.1 libaprutil-1.so.0 -> libaprutil-1.so.0.5.3
(3)导出头文件
基于链接的方式实现
ln -sv
]#ln -sv /usr/local/include/ /usr/include/apache "/usr/include/apache" -> "/usr/local/include/"
(4)导出帮助手册
编辑/etc/man.config文件
添加一个manpath
MANPATH /usr/local/apache(添加此段语句) /usr/local/apache]#ls man man1 man8
至此整个编译安装完成!
安装后问题报错
启动服务失败
]#service httpd start 正在启动 httpd:httpd: Syntax error on line 163 of /etc/httpd/conf/httpd.conf: Cannot load /etc/httpd/modules/mod_ldap.so into server: /etc/httpd/modules/mod_ldap.so: undefined symbol: apr_ldap_ssl_init [失败]
问题分析;/etc/httpd/conf/httpd.的第163行不能加载配置 这个apr_ldap_ssl_init到底是什么鬼,目前未知。
解决办法,注释掉/etc/httpd/cof/httpd.conf第163,164行,并且启动成功
]#service httpd start 正在启动 httpd:httpd: apr_sockaddr_info_get() failed for \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xa7\xd9\x85 \xd8\xb9\xd9\x 84\xd9\x8a\xd9\x83\xd9\x85 httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName [确定]
yum安装links之后测试成功
本地ip测试可访问(需关闭防火墙)iptables -F
完
原创文章,作者:M20-1马星,如若转载,请注明出处:http://www.178linux.com/39288