CentOS程序包管理(3)
应用程序的编译安装(C/C++)
为什么要进行应用程序源代码的编译安装? 1.对应应用程序的程序包不能直接获取到; 2.在已经编译好的二进制格式的程序的功能不包含我们所需要的; 3.在已经编译好的二进制格式的程序中,包含太多的我们所不需要的功能; 软件项目管理工具: C/C++:make Makefile 应用程序源代码的分类: 1.由程序员直接打包的源代码 name-VERSION.tar.gz 2.由第三方利用rpm工具制作的rpm源代码包: name-VERSION-release.src.rpm 源代码的组织形式: 1.一个应用程序包含多个文件; 2.某个文件中的不同的代码段之间,甚至不同文件的代码段之间都可能存在依赖关系; 应用程序源代码的编译过程: 源代码 --> 预处理(预处理器,CPP) --> 编译(编译器,CC[gcc]) --> 汇编(汇编器) --> 链接(链接器) --> 用于执行操作的二进制程序文件 Makefile文件的功能: 1.包含了各个程序源代码文件之间的关系; 2.决定文件的编译顺序; 3.使用哪个预处理器进程何种预处理操作; 4.使用哪个编译器进程何种编译操作; ... 程序员通过使用专用工具,对于所有的源代码文件进行内容的分析和提取,并构建出一个同一的makefile文件的绝对模板,即:Makefile.in 有了这个模板,用户可以根据自己的需求,自行构建Makefile文件,从而可以实现个性化的编译过程;帮助用户生成Makefile文件的是一个名为"configure"的脚本; 开发工具: autoconf:帮助用户生成configure脚本文件; automake:帮助用户生成Makefile.in的模板文件; 建议:在获取任何源代码包并解压缩之后,要去读取其中随程序源代码提供的"INSTALL"或"README"类的文档文件,以获知该应用程序源代码的编译步骤; 开源应用程序的源代码的获取方式: 1.官方自建的资源站点: apache.org(ASF) MariaDB --> mariadb.org varnish-cache.org ... 2.代码托管站点: SourceForge Github code.google.com Linux中进行C/C++源代码编译时使用的编译器:gcc,GNU C Compiler 在使用NAT模式联网进行软件包的安装的时候如果出现/var/run/yum.pid 已被锁定,PID 为 4040 的另一个程序正在运行等相同问题,则~]# rm -f /var/run/yum.pid 在执行安装命令~]# yum install gcc 编译源代码所需的开发环境:(程序包组) CentOS 7: Development Tools Compatibility Libraries CentOS 6: Development Tools Server Platform Development 注意:程序包组中所包含的开发环境并不是非常完整,如果某个应用程序在编译时有其他环境要求的话,需要安装对应应用程序的开发工具包; 如果有rpm格式的开发工具包,其名称为name-devel-VERSION-release.rpm,则可以使用yum直接安装; 如果没有对应的rpm格式的开发工具包,则需要优先编译安装开发工具;
编译源代码安装应用程序的三大步骤:
1.利用configure脚本生成Makefile文件;
~]# ./configure [option]...
--help
--prefix:选择程序安装的路径;
--enable-function:
--with-function:
2.使用项目管理工具"make"进行编译; 注意:有一些应用程序在实施编译操作之前需要测试(make test) 3.使用"make install"命令进行编译后的二进制文件的最后的安装;
编译安装完成以后的收尾工作:
1.导出二进制文件的路径;
2.导出库文件路径;
3.导出头文件路径(可选);
4.导出帮助文件路径;
尝试编译安装httpd:(这些安装包首先要事先存在于你的系统内存当中,如果没有可以到相关网站进行下载)
1.安装apr
~]# tar xf apr-1.5.2-tar.bz2
~]# cd apr-1.5.2
~]# ./configure --prefix=/usr/local/apr-1.5.2
~]# make [-j 4]
~]# make install
2.安装apr-util ~]# tar xf apr-util-1.5.4-tar.bz2 ~]# cd apr-util-1.5.4 ~]# ./configure --prefix=/usr/local/apr-util-1.5.4 --with-apr=/usr/local/apr-1.5.2 ~]# make [-j 4] ~]# make install 3.安装httpd ~]# tar xf httpd-2.4.29-tar.bz2 ~]# cd httpd-2.4.29 ~]# ./configure --prefix=/usr/local/apache-2.4.29 --with-apr=/usr/local/apr-1.5.4 --with-apr-util=/usr/local/apr-util-1.5.4 --with-pcre ~]# make [-j 4] ~]# make install 注:因为需要pcre的支持,所以需要事先安装pcre-devel包; 收尾工作: 1.导出二进制文件: 创建一个文件:/etc/profile.d/httpd.sh export PATH=/usr/local/apache-2.4.29/bin:$PATH 2.导出库文件: 创建一个文件:/etc/ld.so.conf.d/httpd.conf /usr/local/apache-2.4.29/lib64 3.导出头文件; 创建符号链接: ~]# ln -sv /usr/local/apache-2.4.29/include /usr/include/httpd 4.导出帮助文档: 对于CentOS7来说,在导出二进制文件时已经自动导出了帮助文档;如果没有成功导出,则需要在/etc/man_db.conf文件中添加一行: MANPATH_MAP=/usr/local/apache-2.4.29/bin /usr/local/apache-2.4.29/man 对于CentOS6来说,需要手动导出: 在/etc/man.config中添加一行: MANPATH=/usr/local/apache-2.4.29/man