博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【安装源码包】
阅读量:5807 次
发布时间:2019-06-18

本文共 1781 字,大约阅读时间需要 5 分钟。

  hot3.png

其实,在linux下面安装一个源码包是最常用的,笔者在日常的管理工作中,大部分软

件都是通过源码安装的。安装一个源码包,是需要我们自己把源代码编译成二进制的可执行
文件。如果你读得懂这些源代码,那么你就可以去修改这些源代码自定义功能,然后再去编
译成你想要的。使用源码包的好处除了可以自定义修改源代码外还可以定制相关的功能,因
为源码包在编译的时候是可以附加额外的选项的。
源码包的编译用到了linux系统里的编译器,常见的源码包一般都是用C语言开发的,
这也是因为C语言为linux上最标准的程序语言。Linux上的C语言编译器叫做gcc,利用它
就可以把C语言变成可执行的二进制文件。所以如果你的机器上没有安装gcc就没有办法去
编译源码。你可以使用yuminstall -y gcc来完成安装。
安装一个源码包,通常需要三个步骤:

 

1. ./config 在这一步可以定制功能,加上相应的选项即可,具有有什么选项可以通

过”./config --help”命令来查看。在这一步会自动检测你的linux系统与相关的套件是否有编
译该源码包时需要的库,因为一旦缺少某个库就不能完成编译。只有检测通过后才会生成一
个Makefile文件。
2. make 使用这个命令会根据Makefile文件中预设的参数进行编译,这一步其实就是
gcc在工作了。
3. makeinstall 安装步骤,生成相关的软件存放目录和配置文件的过程。
上面介绍的3步并不是所有的源码包软件都一样的,笔者以前也曾经遇到过,安装步骤
并不是这样,也就是说源码包的安装并非具有一定的标准安装步骤。这就需要你拿到源码包
解压后,然后进入到目录找相关的帮助文档,通常会以INSTALL或者README为文件名。所
以,你一定要去看一下。下面笔者会编译安装一个源码包来帮你更深刻的去理解如何安装源
码包。
1.下载一个源码包

如果找不到,可能是包升级了,可以自己去网站找

# wget

这里要提一下,建议以后你把所有下载的源码包放到/usr/local/src/目录下,这个并不是必须

的,只是一个约定。方便你和你的同事将来更好的去运维这台服务器。wget即为下载的命
令,后边跟源码包的下载地址。该地址为笔者从网上找的一个apache的下载地址。
2.解压源码包

一般的源码包都是一个压缩包,如何解压一个.tar.gz的包上一章讲过的。

3.配置相关的选项,并生成Makefile

使用./config --help 可以查看可用的选项。一般常用的有”--prefix=PREFIX“ 这个选项的意思

是定义软件包安装到哪里。到这里,笔者再提一个小小的约定,通常源码包都是安装在
/usr/local/目录下的。比如,我们把apache安装在/usr/local/apache2下,那么这里就应该这
样写”--prefix=/usr/local/apache2”。其他还有好多选项,如果你有耐心你可以挨个去看一看
都有什么作用

笔者在这里只定义了apache的安装目录,其他都是默认。回车后,开始执行check操作

等check结束后生成了Makefile文件

除了查看有没有生成Makefile文件来判定有没有完成./config 的操作外,还可以通过这个命

令”echo$?”来判定,如果是0,则表示上一步操作成功完成,否则就是没有成功。

4. 进行编译

这一步操作,就是把源代码编译成二进制的可执行文件,这一步也是最漫长的一步,编译时

间的长短取决于源代码的多少和机器配置。

5. 安装

在安装前,先确认上一步操作是否成功完成。

makeinstall 会创建相应的目录以及文件。当完成安装后,会在/usr/local目录下多了一个

apache2目录,这就是apache所安装的目录了。

其实在日常的源码安装工作中,并不是每个都像笔者这样顺利完成安装的,遇到错误不

能完成安装的情况是很多的。通常都是因为缺少某一个库文件导致的。这就需要你仔细琢磨
报错信息或者查看当前目录下的config.log去得到相关的信息。另外,如果自己不能解决那
就去网上google一下吧,通常你会得到你想要的答案。

转载于:https://my.oschina.net/jiaozg/blog/93114

你可能感兴趣的文章
elixir 高可用系列 - 目录
查看>>
字节跳动(用户喜好)
查看>>
ASP.Net jquery ajax取后台的值
查看>>
springboot 使用maven 打包 报 (请使用 -source 7 或更高版本以启用 diamond 运算符) 错误解决办法...
查看>>
什么是代码现代化?
查看>>
【2011集训贾志鹏】Crash 的数字表格
查看>>
【UR #5】怎样跑得更快
查看>>
多项式幂函数(加强版)
查看>>
springboot 2.0配置集成thymeleaf的坑
查看>>
like的性能问题
查看>>
vue 中使用 async/await 将 axios 异步请求同步化处理
查看>>
BZOJ1078 [SCOI2008]斜堆
查看>>
Digests from CG articales
查看>>
C++day07 学习笔记
查看>>
弹性盒子
查看>>
password
查看>>
JBPM流程部署之部署解析器相关对象扩展
查看>>
python---time模块使用详解
查看>>
Linux下UPnP sample分析
查看>>
react:reducer-creator
查看>>