前言:

不管是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编译器,如图:

wKioL1Z6q6DDYZ2jAAAha4SS8ko059.png

第一步: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文件,会显示安装步骤:

wKioL1Z_vPLQ-hvDAAAu9abW8ho476.png


第二步:

使用./configure脚本执行安装

并指明安装目录和未知文件安装位置

httpd-2.2.29]# ./configure --prefix=/usr/local/apache2 --sysconfdir=/etc/httpd2

wKioL1Z_0_PCuFQzAAAN0SGFuc4299.png

第三步:

执行make

wKiom1Z_07mDCC4HAAAE2l7d5ho607.png


第三步:

执行make install

wKioL1Z_1BDCHRqQAAAF4iR6V0c181.png


完成之后查看安装结果

wKiom1Z_1EPSJJUnAAAKvx17Chg790.png


第四步:

启动程序:在/apache2/bin目录下有apachectl文件是该程序的启动脚本,利用它启动程序

wKiom1Z_1QKBQIRBAAAXs3rbspU676.png

然后启动该程序

wKioL1Z_1Wzj8ZVGAAAFeChetSk906.png

查看网络连接状态,如果显示80端口已经处于监听状态就表示httpd已经启动:

wKiom1Z_1tfxVkJsAABG25WDIE4841.png


通过服务器就可以访问该地址

wKiom1Z_1zfS_TeKAAA3clZkhiU444.png

安装后的配置:

    (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