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

linux软件安装(一)——源码安装 Linux软件简介Linux上几乎所有的软件都经过了GPL授权,因此几乎所有的软件都会提供源码。 而一个软件要在Linux上执行,必须是二进制文件,因此当我们拿到软件源码后,需要将它编译成二进制文件才能在Linux上运行。软件编译过程将源码编译成可供Linux运行的二进制文件一共需要两步: 1. 使用gcc编译器将源码编译成目标文件 2. 再次使用gcc编译器将目标文件链接成二进制文件这过程看 阅读详情

在这里插入图片描述

在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私房菜之基础学习篇。

Linux软件包源码编译安装实战 从名字上看,老的 unix 系统的 CC 程序叫做 C Compiler。但 GCC 这个名字按 GNU 的说法叫做 Gnu Compiler Collection。因为 gcc 包含很多编译器 (C, C++, Objective-C, Ada, Fortran,and   Java)。所以它们是不一样的,一个是一个古老的 C 编译器,一个是编译器的 GNU 的编译器的集合 (Gcc 里的 C 编译器比 CC 强大太多了,所以你没必要用 CC)。 阅读详情

相关推荐

视频监控设备(NVR、IPC等)如何通过国标GB28181接入到视频监控平台,以及接入过程如何测试视频接入是否成功

GB/T28181标准广泛的应用,视频监控设备通过国标GB28181接入视频监控平台的过程变成程序化、标准化的互联过程,确保了视频监控设备能够在不同系统、不同网络环境下实现远程、跨区域、跨级别的访问和控制。版本有GB28181-2011、2016、2022几个常用版本,威迪斯特的视频监控平台完全支持GB28181的这几个版本,能够实现不同品牌视频监控设备的国标视频接入(国标视频监控接入),或者为国标28181视频接入(国标28181视频监控接入),也为国标281818接入(国标GB/T28181接入。

weixin_70208651的博客 1万+

Linux命令详解./configure、make、make install 命令

文章目录1 基本信息2 详细解释2.1 configure命令2.2 make2.3 make insatll3 扩展说明 1 基本信息 这些都是典型的使用GNU的AUTOCONF和AUTOMAKE产生的程序的安装步骤 ./configure 是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本,另外,./configure是源代码安...

上善若泪 3万+

Unity Tilemap瓦片动态缩放:保持网格尺寸不变的三种实现方案

本文详细探讨了在Unity中实现Tilemap瓦片动态缩放同时保持网格尺寸不变的三种核心方案。针对编辑器静态调整、整体风格化处理及运行时动态控制等不同场景,分别解析了直接修改瓦片属性、调整Tilemap Renderer材质参数以及使用SetTransformMatrix与Matrix4x4矩阵变换的实践方法、优缺点及选型指南,为2D游戏开发提供灵活高效的视觉与交互解决方案。

grass的博客 626

./configure,make,make install的作用

这些都是典型的使用GNU的AUTOCONF和AUTOMAKE产生的程序的安装步骤。 ./configure是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本。make是用来编译的,它从Makefile中读取指令,然后编译。make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。 ...

weixin_30781433的博客 1122

天地图下载带审图号(审图号: GS(2024)0650号)的 “行政区划” 数据(含shp文件下载地址)

在科研投稿论文过程中,多数期刊杂志要求我们制作涉及国界的图件,必须使用自然资源部地图技术审查中心发布的标准地图底图。如地理学报、地理科学等期刊的投稿指南中写到:非标准底图本刊不予发表!(如图1.1所示)如果一定要用,凡涉国界图件(国内部分地区、全国、世界部分地区、全球)必须使用自然资源部标准地图服务系统标准地图底图(http://bzdt.ch.mnr.gov.cn/)(如图1.1所示)或国家测绘局地理信息局标准地图底图(如图1.2所示),所用底图边界要完全无修改(包括南海诸岛位置)。

JData_Engineer的博客 2302

论文复现《基于最大李雅普诺夫指数的电力系统暂态电压稳定评估方案》

电力系统暂态电压稳定评估方案 摘要 本研究提出了一种基于最大李雅普诺夫指数的电力系统暂态电压稳定评估方法。通过分析相空间中相邻轨迹的收敛或发散特性,该方法能够提前判别系统稳定性。论文首先阐述了暂态电压稳定机理,详细介绍了最大李雅普诺夫指数的计算方法。针对IEEE-39节点系统,建立了仿真模型并获取不同故障场景下的数据。研究开发了完整的评估程序,包括数据预处理、相空间重构、指数计算等模块,并通过与时域仿真结果的对比验证了方法的准确性。实验结果表明,该方法能够快速有效地评估电力系统的暂态电压稳定性,为系统安全运

max500600的博客 187

linux Make install

linux make install

yuyuyuliang00的博客 2366

8、内存交织技术详解

本文详细解析了内存交织技术的基本原理、工作机制及实现方式,探讨了其在提升内存访问速度和系统性能中的关键作用。文章还分析了内存交织的优缺点、实际应用场景以及与其他优化技术的结合应用,并提出了未来发展的可能方向,为理解与运用该技术提供了全面参考。

g9h0i1的博客 549

Linux编译安装中configure、make和make install各自的作用详解

configure、make和make install各自的作用详解

qq_30905243的博客 1709

C++和OpenGL实现3D游戏编程【连载7】——文字和汉字的显示(附源码)

上一节我们讨论了纹理在二维平面内不规则图形贴图的相关基础操作,本节我们开始了解游戏里文字以及汉字的显示方法。本节课我们将从基本的ASCII字符显示,拓展到中文字符的显示,最后再讲到纹理字符的显示,并对各种文字显示方法的优缺点和使用场景进行分析,这节课将使用到显示列表、兼容视图、屏幕图形转纹理等操作。

zhooyu的博客 1498

lammps案例:聚乙烯和石墨烯界面pull out模拟

大家好,我是小马老师。 本文介绍lammps模拟计算界面结合力的一个案例。 本案例参考论文《The interfacial mechanical properties of functionalized graphene- polymer nanocomposites》,对论文作者表示感谢。 模型共分2层,上层为聚乙烯模型,下次为单层石墨烯,模拟过程共分3部分:建模、弛豫、拉伸。 (1)建模 使用MS建立聚乙烯和石墨烯模型,具体方法可参考之前的推文,使用build layer方法建立聚乙烯和石墨烯组合模型,

lammps_jiayou的博客 3494

linux中configure命令的作用

configure

hgz2020的博客 2058

Matlab安装硬件支持包、simulink离线安装硬件支持包安装,离线安装ESP32、stm32等安装包,Are you up-to-date on SoftWare Maintenance?

注意:如果提示出现“没有可从此位置安装的兼容支持包后,这个问题,请查看步骤5,是不是没有按照步骤5进行操作.一般情况下出现“没有可从此位置安装的兼容支持包”后,重新安装选择了默认路径就可以成功。如果不是很清楚,直接安装在默认的文件夹下面,即使这个文件夹下没有matlab相关的文件夹,也要这么下载,没有为什么,切记尽量按默认路径安装,更改下载的路径不成功,别怪我没提醒。:下载到哪里非常重要,如果下载的不是默认的路径下,就需要将其中这个的是这个archives文件夹,连同其他文件一并要复制出来,拷贝到。

pvmsmfchcs的博客 1746

./configure与cmake——源码安装软件

Pipeline 源文件 --> cmakelist --> cmake --> makefile --> make --> 可执行文件 示意图如下: 基本信息 ./configure 是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本。 make 是用来编译的,它从Makefile中读取指令,然后编译。 make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。

qq_45764533的博客 2813

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

linux开源软件configure配置

Linux 源码安装软件之 configure 参数解释 Linux环境下的软件安装,并不是一件容易的事情;如果通过源代码编译后在安装,当然事情就更为复杂一些;现在安装各种软件的教程都非常普遍;但万变不离其中,对基础知识的扎实掌握,安装各种软件的问题就迎刃而解了。Configure脚本配置工具就是基础之一,它是autoconf的工具的基本应用。      与一些技巧相比,Configure显

huding8811的专栏 1081

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Linux自由软件安装 ./config, make的理解

在linux系统中安装软件的其中一种:源码安装的方法是,先输入./configure,然后输入make,最后make install。或许有人留意到没有,这些软件的根目录中开始是没有Makefile的,在执行了./configure后会生成了很多奇怪名字的文件. configure是一个脚本,它能设置源程序来适应各种不同的操作系统平台,并且根据不同的系统来产生相应的makefile文件,M...

coco的专栏 395

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Linux的软件安装之源码安装方法

介绍 Linux系统中的软件很多都是开源的,可以下载到源代码,一般源码都是先经tar打包然后再压缩成 .tar.gz或.tar.bz2格式。 这里插一句,tar是linux常用的打包程序,打的包通常成为tar包,打包的过程中附加参数可以调用常用的压缩程序进行压缩,比如gzip,bzip2等,参数-z就是调用gzip,-j就是调用bzip2,结果就相应的产生了tar.gz文件和tar.bz2文件。 以下使用nmap-7.91.tar.bz2源码包为例进行介绍。 安装过程 第一步 下载源码包并上传到Linux

KhaoesZ的博客 1328

Linux 源码安装软件之 configure 参数解释

Linux环境下的软件安装,并不是一件容易的事情;如果通过源代码编译后在安装,当然事情就更为复杂一些;现在安装各种软件的教程都非常普遍;但万变不离其中,对基础知识的扎实掌握,安装各种软件的问题就迎刃而解了。Configure脚本配置工具就是基础之一,它是autoconf的工具的基本应用。      与一些技巧相比,Configure显得基础一些,当然使用和学习起来就显得枯燥乏味一些,当然要成为高手,对基础的熟悉不能超越哦。      为此我转载了一篇关于Configure选项配置的详细介绍。供大家参考   

L_Andy的专栏 893

linux自由软件安装 ./config, make的理解

在linux系统中安装软件的其中一种:源码安装的方法是,先输入./configure,然后输入make,最后make install。或许有人留意到没有,这些软件的根目录中开始是没有Makefile的,在执行了./configure后会生成了很多奇怪名字的文件. configure是一个脚本,它能设置源程序来适应各种不同的操作系统平台,并且根据不同的系统来产生相应的makefile文件...

weixin_30537391的博客 206

configure/make/make install的作用

这些都是典型的使用GNU的AUTOCONF和AUTOMAKE产生的程序的安装步骤。./configure是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本。make是用来编译的,它从Makefile中读取指令,然后编译。make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。AUTOMAKE和AUT...

湛蓝的天空 246

./configure && make && make install详解【转】

(转自:https://blog.youkuaiyun.com/nemo2011/article/details/7384501) 在Linux中利用源码包安装软件最重要的就是要仔细阅读安装包当中的READMEINSTALL两个说明文件,这两个文件会清楚的告诉你如何可以正确的完成这个软件的安装! 我们都知道源码包安装分为这么几个阶段, 1、./configure:“confi...

Uaena的博客 638

Linux源码安装

Linux上几乎所有的软件都经过了GPL授权,因此几乎所有的软件都会提供源码。 而一个软件要在Linux上执行,必须是二进制文件,因此当我们拿到软件源码后,需要将它编译成二进制文件才能在Linux上运行。 软件编译过程 将源码编译成可供Linux运行的二进制文件一共需要两步: 使用gcc编译器将源码编译成目标文件 再次使用gcc编译器将目标文件链接成二进制文件 这过程看似简单,实则不然。一个软...

hmxz2nn的博客 348

linux tar.gz 安装方法

linux下解压tar.gz文件  下面所所有操作,后面有所有步骤说明  [yonghu@localhost ~]#       su root  口令:                                        [root@localhost ~]#         cd /home/new/Desktop  [root@localhost Desktop]#

JAVA 1515

Linux下源码安装的经验总结

X11 源码 编译 安装 configure ldconfig automake

JuanA1的专栏 2294

install三方库

软件包分类 源码包–》源代码 开源 (脚本安装包) 但由于安装较慢,且安装时容易报错,一般不使用源码包进行安装,但对应一些免费的三方库,人家才懒得给你弄好呢,丢一个源码包给你,自己弄,当然也是为了源码开源,再次感谢 优点: 开源,如果有足够的能力,可以修改源代码 可以自由选择所需的功能 软件是编译安装,所以更加适合自己的系统,更加稳定也效率更高 卸载方便(可以将该文件直接删除) 二进制包(RPM包、系统默认包) —》其已经编译好了,所以无法获取到源码 经过编译,不再可以看到源代码 功能选

wuguinianjing的博客 239
上一篇: python3 字符串格式化(%和format)
下一篇: python函数中的几种参数详解(必需参数、默认参数、可变参数、关键字参数、命名关键字参数)
你大佬来啦
博客等级 码龄7年 322粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值