20160822作业

源码安装http2.2.29

一、一般源码编译都是日后工作中的重点

程序包编译安装:

     编译是真正将代码编译成为cpu可以执行的指令的过程,能够编译成为自己需要版本的过程。

     如果我们在网上下载的话会有很多不便,如:1.找不到合适的rpm包,2.虽然有合适的,不满足我们的需要的功能等等!


源代码组织格式:

多文件:文件中的代码之间。很可能存在跨文件依赖关系:

项目打包构建管理工具:

c、c++:make(会完成以上源代码的所有过程)

(configure --》Makefile.in (模板)--》makefile)


C代码编译安装三步骤:

(1)./configure

1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及Makefile.in文件生成makefile

2)检查依赖到的外部环境;

(2)make

根据makefile文件,构建应用程序

(3)make  install





示例:下面来源码安装httpd-2.2.29

一、需先把实验环境安装好

1.下载源码包

httpd-2.2.29  httpd-2.2.29.tar.bz2         //down一个源码包到目录

[root@localhost http3]# tar -jxvf httpd-2.2.29.tar.bz2    //进行解压操作
2.安装开发环境,gcc,开发包组
[root@localhost cd]# yum grouplist  
  //查询到可安装包组,安装development tools, 这是一个开发环境会用到的包组
[root@localhost cd]# yum groupinstall “Development tools”    //安装包组

wKiom1e8ALnzl175AAB7_81hdFM905.png

wKioL1e8ALqhL-g9AAGJSn4HQeM985.png



安装gcc:

[root@localhost cd]# yum install gcc      //已经安装过了wKioL1e8ALuDsHiyAADMjLZv3Zg059.png




二、进入源码包解压的目录中开始安装:

1.[root@localhost httpd-2.2.29]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/http

# --perfix= 指定安装位置

#--sysconfdie=指定配置文件安装位置

#可用./configure --help 查看安装时的选项,也可查看源码目录内的INSTALL文件查看安装方法

2.执行make命令wKiom1e8AL3zmvqWAAD5uGbT53Y026.png

3.执行make    install命令进行安装

wKiom1e8AL-DzsVnAAEnJA7ilb0469.png


安装后的配置:

(1)如果不在命令搜索路径下,则需导出二进制程序目录至PATH环境变量中:

编辑文件/etc/profile.d/NAME.sh

export PATH=/PATH/TO/BIN:$PATH

[root@localhost apache]# cd /etc/profile.d/
[root@localhost profile.d]# touch http.sh
[root@localhost profile.d]# vim http.sh 
  export PATH=/usr/local/apache/bin:$PATH

wKioL1e8AMCz_uv0AAA0w859kc4562.png


(2)导出库文件路径

编辑文件/etc/ld.so.conf.d/NAME.conf

添加新的库文件所在目录至此文件中;

让系统重新生成缓存

ldconfig -v

[root@localhost profile.d]# cd /etc/ld.so.conf.d/
[root@localhost ld.so.conf.d]# touch apache.conf
[root@localhost ld.so.conf.d]# vim apache.conf 
/usr/local/apache/lib

  wKioL1e8ALfwqBKyAAAmd5rXaLc091.png    统重新生成缓存  ldconfig -

[root@localhost profile.d]# ldconfig -v
/usr/local/apache/lib:
libapr-1.so.0 -> libapr-1.so.0.5.1
libexpat.so.0 -> libexpat.so.0.5.0
libaprutil-1.so.0 -> libaprutil-1.so.0.5.3
/usr/lib64/mysql:
libmysqlclient.so.16 -> libmysqlclient.so.16.0.0
libmysqlclient_r.so.16 -> libmysqlclient_r.so.16.0.0
..........................

wKioL1e8AMXD0aBdAABM0A_8J8s080.png

    (3)导出头文件

        保存至此/usr/incloud或者基于链接的方式实现

        ln -sv 

        导出所有每一个文件为一个链接

[root@localhost include]# ln -s /usr/local/apache/include/ /usr/include/apache
[root@localhost include]# cd  /usr/include
[root@localhost include]# ll
total 1344
-rw-r--r--.  1 root root   7502 May 10 21:54 aio.h
-rw-r--r--.  1 root root   2115 May 10 21:54 aliases.h
-rw-r--r--.  1 root root   1289 May 10 21:54 alloca.h
-rw-r--r--.  1 root root   4351 May 10 21:54 a.out.h
lrwxrwxrwx   1 root root     26 Jul 25 21:57 apache -> /usr/local/apache/include/
         .........................

wKiom1e8ALfwICusAABRNtVP4HA765.png


    (4)导出帮助手册

        编辑/etc/man.config文件

        添加MANPATH=/usr/local/apchach2/man    //此为http服务源码安装时指定的文件地址

[root@localhost include]# vim /etc/man.config

wKiom1e8AMOQzNX2AABLHnbkF-E495.png