linux中安装软件源码的过程中configure、make和make install分别起什么作用?

在这里插入图片描述

在linux安装软件的过程中,若非root用户或者想要安装最新版的某些软件,那么就得要安装自己从网上下载的软件,这种从网上下载得到的一般都是软件源码的压缩包(一般情况下后缀都是.tar.gz),安装这样的包一般需要先解压缩,接下来一次使用./configure、make、make install这几个命令进行安装。既然随时都在使用这些命令,那么这些命令分别代表什么呢?本文将简要介绍这几个命令的含义,希望能帮助读者理解通过源码安装软件背后的步骤,也希望能帮助读者更加了解linux系统的奥妙。


configure

源代码实际上就是一些写满了程序代码的程序文件,这些源码所占的内存可是不小的,一个内核的源码大约就要300-500MB以上,因此一般在网上供大家下载的源码都是压缩后的文件,因此其后缀为.tar.gz(可由gzip打包得到),正是因此安装的源码软件也被叫作Tarball软件。

当然Tarball文件中不是完全为源代码文件,还有检测程序的文件(可能是configure或config等文件名)。当我们将下载好的Tarball文件解压缩之后,进入解压得到的文件夹,会发现其中有很多个文件以及文件夹,第一步configure操作要使用到的就是其中的configure文件,configure文件是可执行文件,直接在当前目录下执行configure即可。 configure是软件开发商写出的检测程序,用于检测用户的操作环境,待该检测程序检测完毕后就会主动在当前文件家中生成特定的makefile,makefile就可以被用于下一步的make操作。

这里configure这个检测程序会检查的数据大致有以下这些(参考鸟哥的书):

  • 是否有适合的编译程序可以编译本软件的程序代码
  • 是否已经存在本软件所需要的函数库或者其他需要的相关软件
  • 操作系统平台是否适合本软件,包括linux内核版本
  • 内核的头定义文件(header include)是否存在(驱动程序必须要做的检测)

这里我使用R的源包作为例子展示一下,解压后文件夹中的文件如下图,可以看到其中configure是可执行文件,其中还有Makefile.in,这是makefile的模板文件。
在这里插入图片描述
这里我在命令行使用./configure之后文件中的内容变成了如下(根据系统环境不同得到的文件可能不一样):
在这里插入图片描述
可以看到其中多出了很多文件以及文件夹,至此configure的任务先结束了,但需要注意的是在某些情况下我们可能不只是按照默认的情况执行configure,而是要定义一些参数,要查看可使用的参数或者帮助可以使用./configure -help查看帮助文档。较常用的一个参数就是–prefix=/path这个参数,这个参数将指定安装目录。configure根据检测到的信息最后主动生成makefile,得到了makefile后就可以使用接下来的make操作。

补充一下,若是很简单的makefile可能可以自己写,但是若软件功能较为复杂自己写makefile和configure文件就不太可能了(可以自己查看configure和makefile文件),好在已经有自动生成configure和makefile文件的工具了,在网上看到有autotools这个工具集,有兴趣可以看看→链接

make

make操作是安装过程中的核心,是将下载得到的源代码编译为操作系统可以执行的二进制程序的过程。make本身是一个命令,其具有很多参数可以选择,其默认在当前文件夹下寻找makefile进行make编译操作,编译这个词不多解释,其就是将我们编写好的程序代码转换为只有计算机才能读取的程序文件,这样的程序可以被计算机直接执行。

要编译就需要用到“编译程序”,经过编译程序的编译和连接后,就能生成二进制程序。如对linux上标准使用的C语言的编译就是依赖gcc这个程序来进行编译的,gcc这个程序在平常安装程序的时候可以说是经常出现啊。gcc能对源码进行编译,也对函数库、主程序、子程序进行链接,以形成主要的可被执行的二进制程序。makefile中含有的内容就是使用gcc编译各种可执行文件的命令,因此使用make的作用就是将需要被编译的文件全部统一编译,这样之后就可以直接使用可执行命令了。

要知道一个软件中具有的源代码文件可能非常多的,因此在makefile文件中将所有需要编译的文件都记录下来,这样使用软件的人只需要使用一次make,就几乎一劳永逸了。除了上面的好处外,使用make后可执行文件中的依赖关系也确定下来,之后若是想要修改某个文件,是不需要对其它文件进行重新编译的。

除了make外,还可以使用的相关命令还有make clean,make clean起到clean的作用,将之前编译过的文件删除,以重新开始下一次的make操作。

make install

make步骤按照makefile作为其参数配置文件进行编译操作,之后生成可执行文件,但是这些可执行文件是处于当前文件夹下的,其并未被安装到指定目录,最后要做的一步即make install就是将可执行文件、第三方依赖包和文档复制到正确的路径的过程。有时候这一步会出错就是可能因为没有足够权限将软件安装到某个目录下。

使用make install后软件就安装完成了,若是想要之后能随意调用软件的可执行文件,那么可以将软件加入环境变量。

参考:https://zhuanlan.zhihu.com/p/77813702
参考:https://www.cnblogs.com/tinywan/p/7230039.html
参考:鸟哥的LINUX私房菜之基础学习篇。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值