1。源码包基本概述2。源码包的好处3。源码包的获取4。源码包分类5。源码包的安装5。1configure脚本的功能5。2编译安装注意事项5。3源码包编译实例1。源码包基本概述 在linux环境下面安装源码包是比较常见的,早期运维管理工作中,大部分软件都是通过源码安装的。那么安装一个源码包,是需要我们自己把源代码编译成二进制的可执行文件。 源码包的编译用到了linux系统里的编译器,通常源码包都是用C语言开发的,这也是因为C语言为linux上最标准的程序语言。Linux上的C语言编译器叫做gcc,利用它就可以把C语言变成可执行的二进制文件。所以如果你的机器上没有安装gcc就没有办法去编译源码。可以使用yumyinstallgcc来完成安装。2。源码包的好处自定义修改源代码定制需要的相关功能新版软件优先更新源码3。源码包的获取 官方网站,可以获得最新的软件包 Apache官方网站 Nginx官方网站 Mysql官方网站4。源码包分类源码格式(需要编译安装)二进制格式(解压后可以直接使用)5。源码包的安装 编译需要编译环境,开发环境,开发库,开发工具。 常用的编译环境有c、c、perl、java、python5种 c环境的编译器:gcc(GNUCComplier) c环境的编译器:g make:c、c的统一项目管理工具,编译时有可能调用gcc也有可能调用g。使用makefile文件定义make按何种次序去编译源程序文件中的源程序 源码安装三部曲(常见): 第一步:。configure(定制组件) 1。指定安装路径,例如prefixoptnginx1。12 2。启用或禁用某项功能,例如enablessl 3。和其它软件关联,例如withpcre 4。检查安装环境,例如是否有编译器gcc,是否满足软件的依赖需求 5。检测通过后生成Makefile文件 第二步:make 1。执行make命令进行编译,可以使用j指定CPU核心数进行编译 2。按Makefile文件进行编译,编译成可执行二进制文件 3。生成各类模块和主程序 第三步:makeinstall 1。按Makefile定义好的路径拷贝至安装目录中 上面介绍的源码三部曲不能百分百通用于所有源码包,也就是说源码包的安装并非存在标准安装步骤,但是大部分源码安装都是类似的步骤 建议: 拿到源码包解压后,然后进入到目录找相关的帮助文档,通常会以INSTALL或者README为文件名5。1configure脚本的功能让用户选定编译特性检查编译环境是否符合程序编译的基本需要5。2编译安装注意事项如果安装时不是使用的默认路径,则必须要修改PATH环境变量,以能够识别此程序的二进制文件路径;修改etcprofile文件或在etcprofile。d目录建立一个以。sh为后缀的文件,在里面定义exportPATHPATH:pathtosomewhere默认情况下,系统搜索库文件的路径只有lib,usrlib增添额外库文件搜索路径方法:在etcld。so。conf。d中创建以。conf为后缀名的文件,而后把要增添的路径直接写至此文件中。此时库文件增添的搜索路径重启后有效,若要使用增添的路径立即生效则要使用ldconfig命令ldconfig:通知系统重新搜索库文件 etcld。so。conf和etcls。so。conf。d。conf配置文件 etcld。so。cache缓存文件 v显示重新搜索库的过程 p打印出系统启动时自动加载并缓存到内存中的可用库文件名及文件路径映射关系头文件:输出给系统默认:系统在usrinclude中找头文件,若要增添头文件搜索路径,使用链接进行man文件路径:安装在prefix指定的目录下的man目录默认:系统在usrshareman中找man文件。此时因为编译安装的时候不是安装到默认路径下,如果要查找man文件则可以使用以下两种方法:manMpathtomandircommand在etcmandb。conf文件中添加一条MANPATH5。3源码包编译实例 下面通过编译安装nginx来深入理解源码包安装 1。基础环境准备 〔rootlocalhost〕yumyinstallgccgcccmakewget 2。下载源码包(源码包一定要上官方站点下载,其他站点不安全) 〔rootlocalhost〕cdusrsrc 〔rootlocalhostsrc〕wgethttp:nginx。orgdownloadnginx1。12。2。tar。gz 3。解压源码包,并进入相应目录 〔rootlocalhostsrc〕tarxfnginx1。12。2。tar。gz 〔rootlocalhostsrc〕cdnginx1。12。2 4。配置相关的选项,并生成Makefile 〔rootlocalhostnginx1。12。2〕。configurehelphead helpprintthismessage prefixPATHsetinstallationprefix sbinpathPATHsetnginxbinarypathname modulespathPATHsetmodulespath confpathPATHsetnginx。confpathname errorlogpathPATHseterrorlogpathname pidpathPATHsetnginx。pidpathname lockpathPATHsetnginx。lockpathname 后面的内容省略了,使用。configurehelp命令查看可以使用的选项一般常用的有prefixPREFIX这个选项的意思是定义软件包安装到哪里建议,源码包都是安装在opt目录下 5。指定编译参数 〔rootlocalhostnginx1。12。2〕。configureprefixoptnginx1。12。2 6。验证这一步命令是否成功,非0的都不算成功 〔rootlocalhostnginx1。12。2〕echo?0 7。编译并安装 〔rootlocalhostnginx1。12。2〕make 〔rootlocalhostnginx1。12。2〕makeinstall 〔rootlocalhostnginx1。12。2〕echo? 8。建立软链接 〔rootlocalhostnginx1。12。2〕lnsoptnginx1。12。2optnginx 源码编译报错信息处理 checkingforCcompiler。。。notfound。configure:error:Ccompilerccisnotfound 解决方案 〔rootlocalhost〕yumyinstallgccgcccmake 。configure:error:theHTTPrewritemodulerequiresthePCRElibrary。 Youcaneitherdisablethemodulebyusingwithouthttprewritemoduleoption,orinstallthePCRElibraryintothesystem,orbuildthePCRElibrary staticallyfromthesourcewithnginxbyusingwithpcreoption。 解决方案 〔rootlocalhost〕yuminstallypcredevel 。configure:error:theHTTPgzipmodulerequiresthezliblibrary。 Youcaneitherdisablethemodulebyusingwithout httpgzipmoduleoption,orinstallthezliblibraryintothe system,orbuildthezliblibrarystaticallyfromthesourcewith nginxbyusingwithzliboption。 解决方案: 〔rootlocalhost〕yumyinstallzlibdevel 。configure:error:SSLmodulesrequiretheOpenSSLlibrary。 Youcaneitherdonotenablethemodules,orinstalltheOpenSSL libraryintothesystem,orbuildtheOpenSSLlibrarystaticallyfromthesourcewithnginxbyusingwithopenssloption。 解决方案 〔rootlocalhost〕yumyinstallopenssldevel