程序包编译安装

 
先说个特殊的源码安装:testapp-VERSION-release.src.rpm --> 有src字样的RPM包安装后,需要使用rpmbuild命令制作成二进制格式的rpm包,而后再安装;
 
一. 编译的基本知识和编译前提
         
C、C++中,有一个专门的项目管理工具:make,根据make的配置文件makefile来自动进行源码安装,而makefile的生成过程:(configure --> Makefile.in(相当于一个模板) --> makefile)
             
  1)相关开发工具:
                autoconf: 生成configure脚本
                automake:生成Makefile.in
            建议:安装前查看INSTALL,README
 
  2)开源程序源代码的获取:
            官方自建站点:
                     mariadb.org
                     apache.org(ASF)
                      ...
            代码托管:
                SourceForge
                Github.com
                code.google.com
 
      
  3)编译C源代码前提:提供开发工具及开发环境         
                开发工具:make, gcc等
                开发环境:开发库,头文件,例如glibc:标准库
                通过“包组”提供开发组件
                    CentOS 6: "Development Tools", "Server Platform Development", desktop platform development(开发有图形界面东西的时候需要)
 
 
二.    C代码编译安装三步骤:
 
           1)     ./configure:
                    (1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指令以及Makefile.in文件生成makefile;
                    (2) 检查各启用特性所依赖到的外部环境;比如某个特性需要依赖外部的某个程序包,如果这个程序包不存在就会报错。
 
                    --help: 获取其支持使用的选项,不同源码支持的选项不一样
 
                    选项分类:
                        安装路径设定:
                            --prefix=/PATH/TO/SOMEWHERE: 指定默认安装位置;默认为/usr/local/
                            --sysconfdir=/PATH/TO/SOMEWHERE:配置文件安装位置,不指明的话就安装在/usr/local目录下;
                        例如: ./configure --prefix=/usr/local/apache2 --sysconfdir=/etc/httpd2
                        
           2)make:根据makefile文件,构建二进制应用程序;
                    
           3)make install:其实相当于cp命令,把相应的文件复制到指定目录
   
     
三.  安装后的配置:
            (1) 导出二进制程序目录至PATH环境变量中;
                编辑文件/etc/profile.d/NAME.sh---创建一个新的
                    export PATH=/PATH/TO/BIN:$PATH
 
            (2) 导出库文件路径
                编辑/etc/ld.so.conf.d/NAME.conf,添加新的库文件所在目录至此文件中; 
                让系统重新生成缓存: ldconfig [-v] ---参数v是显示过程
                   
            (3) 导出头文件
                基于链接的方式实现:
                    ln -sv  ---可以导出整个目录为一个符号链接,也可以导出单个文件为一个符号链接
 
            (4) 导出帮助手册
                编辑/etc/man.config文件,添加一个MANPATH路径,例如添加MANPATH /usr/local/apache2/man
 
 
原文地址:https://www.cnblogs.com/regit/p/7762084.html