程序包编译
程序包编译安装:
Application-VERSION-release.src.rpm–>
安装后,使用rpmbuild命令制作成二进制格式的rpm包,而后再安装
源代码–>预处理–>编译(gcc)–>汇编–>链接–>执行
源代码组织格式:
多文件:文件中的代码之间,很可能存在跨文件依赖关系
C、C++:make (项目管理器,configure –>Makefile.in –> makefile)
java: maven
编译安装
C代码编译安装三步骤:
1、./configure:
(1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及makefile.in文件生成makefile
(2) 检查依赖到的外部环境
2、make:根据makefile文件,构建应用程序
3、make install:复制文件到相应路径
开发工具:
autoconf: 生成configure脚本
automake:生成Makefile.in
注意:安装前查看INSTALL,README
开源程序源代码的获取:
官方自建站点:
apache.org (ASF)
mariadb.org
…
代码托管:
SourceForge.net
Github.com
code.google.com
c/c++编译器: gcc(GNU C Complier)
编译C源代码:
前提:提供开发工具及开发环境
开发工具:make, gcc等
开发环境:开发库,头文件
glibc:标准库
通过“包组”提供开发组件
CentOS 7: "Development Tools",
"Server Platform Development",
第一步:运行configure脚本
选项:指定安装位置、指定启用的特性
–help: 获取其支持使用的选项
选项分类:
安装路径设定:
–prefix=/PATH: 指定默认安装位置,默认为/usr/local/
–sysconfdir=/PATH:配置文件安装位置
System types:支持交叉编译
Optional Features: 可选特性
–disable-FEATURE
–enable-FEATURE[=ARG]
Optional Packages: 可选包,
–with-PACKAGE[=ARG],依赖包
–without-PACKAGE,禁用依赖关系
第二步:make
第三步:make install
安装后的配置:
(1) 二进制程序目录导入至PATH环境变量中;
编辑文件/etc/profile.d/NAME.sh
export PATH=/PATH/TO/BIN:$PATH
(2) 导入库文件路径
编辑/etc/ld.so.conf.d/NAME.conf
添加新的库文件所在目录至此文件中;
让系统重新生成缓存:
ldconfig[-v]
(3) 导入头文件
基于链接的方式实现:
ln -sv
(4) 导入帮助手册
编辑/etc/man.config|man_db.conf文件
添加一个MANPATH
示例:源码安装apache
安装apache,需要先安装包组的Development Tools
grouplist命令可以查看到已经安装的包组
接下来,需要下载apache相应的文件,我们首先安装lftp命令,默认没有安装
apache的压缩包可以到apache.org官网下载,此处我们利用教室的资源,查找能安装的包
找到这次实验用的httpd-2.2.29的包,并且用get命令下载到系统当前目录
查看该包的路径,然后解压缩
默认也是解压到当前路径
cd进去httpd的目录里面,首先我们先要看一下安装说明,这是必须要看的,不然出现其他自己也不清楚的状况就不好了
查看安装说明,确认一些基本的信息
再看看说明文件
在说明文件里面,会大概介绍这个包大概有什么用之类
看完说明文件以后,先不着急安装,先看看configure脚本的一些细节说明
例如这里就介绍了软件的默认安装目录,如果不查看的话,可能我们都不知道文件放哪里呢
看看其他关键文件,例如程序二进制文件和库文件等等,这里还有提示我们添加环境变量,等下安装完成这些都需要设置的
查看系统安装关键的目录,以及目录的说明,安装的时候,这些目录的位置我们也换成自定义目录位置
支持交叉编译的文件
还有其他许多功能开关,如果需要用的话需要好好看看这些功能的作用
开始运行脚本进行安装的第一步了,首先是配置好一系列安装文件
脚本运行完会多了一堆的配置文件
运行make,开始编译
我们可以查看/usr/local目录下面发现没有http2文件。是因为还没有开始安装
运行make install,安装编译完的文件
此时我们进去安装目录里面,看一下安装好的文件,因为第一次安装,不知道怎么使用的话,这个时候当然是查询帮助手册,但是我们发现没有帮助手册,不要慌,是因为系统没有查询帮助文件的路径
CentOS 7下面编辑/etc/man_db.conf的文件。在下图的位置加上安装好后的apache的帮助文件路径
如果是CentOS 6的话,帮助文件的路径会在/etc/man.config里面
此时已经可以查看apachectl的手册了
为了方便我们直接运行apache的命令,我们把apache包的bin目录导入$PATH里面
在/etc/profile.d/下面创建http2.sh的脚本,然后运行该脚本,并且查看$PATH变量此时是否正确。脚本的信息如下图所示。
此时我们把apache的库文件的路径配置也写入到/etc/ld.so.conf.d/目录下面,创建一个http2.conf的脚本,内容是apache的lib的路径,如下图所示。
库文件的配置文件写好以后,运行ldconfig -v的命令,把库文件加载到内存里面
接下来把创建头文件的软链接目录到系统的/usr/include/目录下面
为了配置测试,此处创建一个简单的index.html文件到apache目录下面
以上都准备,我们可以开始运行apache服务器了,会发现有两行报错,这两个报错在此环境中是没有问题的,因为当前环境还没有配置web服务器的dns和ip等信息
启动完apacche服务以后,我们用另外一台服务器链接测试看看
此处正常情况下应该是正常运行,如果有发现报错的话,排错看看是哪里出了问题
此时查看一下apache的端口,发现端口号80是开着的,应该httpd服务已经开启了
测试一下10.1.156.72的连通性,发现可以ping通,然后运行telnet 10.1.156.72到apache的服务器,发现链接不到,可能是防火墙的问题了。
登陆到apache的服务器上面,把iptables里面的信息都清空掉
重新在156.68的机器上面运行links 10.1.156.72,发现可以登陆
在电脑上面的浏览器测试一下,也没有问题,到此处实验已完毕。
原创文章,作者:~微风~,如若转载,请注明出处:http://www.178linux.com/39677