Linux 如何安装程序的源代码软件包/源码程序包/源码包?

文章目录

  • 一、安装源码包的三个步骤
    • (一)执行命令 configure,进行配置/检测
    • (二)执行命令 make,编译源码
    • (三)执行命令 make install,安装软件
  • 二、源码包安装示例
    • (一)下载源码包
    • (二)解压源码包
    • (三)配置相关的选项,并生成 Makefile
    • (四)进行编译
    • (五)进行安装

安装一个源码包,需要我们自己把源代码编译成二进制的可执行文件。如果你读得懂这些源代码,那么你就可以去修改这些源代码自定义功能,然后再去编译成你想要的。使用源码包的好处除了可以自己修改源代码外还可以定制额外的功能,因为源码包在编译的时候是可以附加额外的选项的。

源码包的编译用到了 Linux 系统里的编译器,常见的源码包一般都是用 C 语言开发的。Linux 上的 C 语言编译器叫做 gcc,利用它就可以把C 语言变成可执行的二进制文件。所以如果你的机器上没有安装 gcc 就没有办法去编译源码。你可以使用 yum install -y gcc 来完成安装。

一、安装源码包的三个步骤

(一)执行命令 configure,进行配置/检测

源码程序包解压后,进入软件包根目录下,然后执行命令 ./configure,在这一步可以定制功能,加上相应的选项即可,有哪些选项可以选择,你可以通过 ./configure --help 命令来查看。在这一步会自动检测你的 Linux 系统和相关的套件是否有编译该源码包时需要的库,因为一旦缺少某个库就不能完成编译。只有检测通过后会生成一个 Makefile 文件。

(二)执行命令 make,编译源码

make 使用这个命令会根据 Makefile 文件中预设的参数进行编译,这一步其实就是 gcc 在工作了。

(三)执行命令 make install,安装软件

执行命令 make install 开始安装步骤,这是一个生成相关的软件存放目录和配置文件的过程。

上面介绍的三步并不是安装任何源码包软件都一样的,也就是说源码包的安装并没有标准的安装步骤。具体安装步骤,你可以拿到源码包解压后,进入到目录找相关的帮助文档查看,帮助文档通常会以 INSTALL 或者 README 命名。所以,你一定要去看一下。

二、源码包安装示例

下面笔者会编译安装一个源码包来帮你更深刻的去理解如何安装源码包。

(一)下载源码包

在这里插入图片描述
这里要提一下,建议以后你把所有下载的源码包放到 /usr/local/src/ 目录下,这个并不是必须的,只是一个约定。方便你和你的同事将来更好的去运维这台服务器。wget 即为下载的命令,后边跟源码包的下载地址。该地址为笔者从网上找的一个 apache 的下载地址。

(二)解压源码包

在这里插入图片描述
一般的源码包都是一个压缩包。

(三)配置相关的选项,并生成 Makefile

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

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

等 check 结束后生成了 Makefile 文件。

在这里插入图片描述

除了查看有没有生成 Makefile 文件来判定有没有完成 ./config 的操作外,还可以通过这个命令 echo $? 来判定,如果是 0,则表示上一步操作成功完成,否则就是没有成功。

在这里插入图片描述

(四)进行编译

在这里插入图片描述
这一步操作,就是把源代码编译成二进制的可执行文件,这一步也是最漫长的一步,编译时间的长短取决于源代码的多少和机器配置。

执行命令 echo $? 确认编译操作是否成功。
在这里插入图片描述

(五)进行安装

在这里插入图片描述

make install 会创建相应的目录以及文件。当完成安装后,会在 /usr/local 目录下多了一个 apache2 目录,这就是 apache 所安装的目录了。

在这里插入图片描述

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334159.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大文件拆分小文件求top_将文件拆分为流

大文件拆分小文件求top上周,我讨论了类Pattern新的(since 1.8)方法splitAsStream只能根据流的需要从字符序列中读取字符序列,并且不能继续进行模式匹配以创建所有可能的元素并返回它作为流。 这种行为是流的本质,它是支…

如何取消ie.html,IE浏览器安全警告怎么关闭

部分用户在使用IE浏览器打开某些页面的时候,可能会出现一个“安全警告”的对话框,虽然影响不大,但是每次出现都让人很烦闷,这个时候你就可以根据下面的操作去关闭这个功能。自从百度近日开启了HTTPS安全网页功能之后,每…

sql 计算两个小数乘积_数学篇|学会这些数学计算技巧,想不满分都难!

计算是小学数学的基础,四则运算和混合运算是计算要考察的重点。在这里我们总结了小学用到的所有计算定律和简便方法,包括运算定律、运算法则、运算顺序和速算技巧四大部分,帮助小学生牢固掌握数学知识点。先赞后看,收获满满&#…

Linux 如何关闭防火墙

一、使用 System V init 作为初始化系统的 Linux(例如:CentOS 6.x) 关闭防火墙的命令: chkconfig iptables off或 service iptables stop二、使用 systemd 作为初始化系统的 Linux(例如:CentOS 7.x&#…

java学习2018年_Java 20年

java学习2018年二十年前,在苏黎世的一间公寓里发生了两件事。 我的女儿迈出了第一步,一位年轻的博士后研究员(她的父亲)迈出了使用Java的第一步。 很难完全了解当时的Java。 在这些时代,TCL盛行,Java时代与…

html 不透明阴影,CSS_css box-shadow阴影不透明的解决办法,如下面示例: 复制代码代码如 - phpStudy...

如下面示例:复制代码代码如下:phpStudy.shadow{width:120px;height:120px;border:1px solid #ccc;background:#fff;font-size:12px;padding:10px;-moz-box-shadow:0 4px 4px #999;-webkit-box-shadow:0 4px 4px #999;box-shadow:0 4px 4px #999;*filter: progid:DXI…

shell 脚本和 bash 脚本的关系

Shell 分类 常见的 Shell 有 sh、bash、csh、tcsh、ash 等。其中 bash shell 是 Linux 的默认 shell。即 bash 是 shell 的一种。 bash 脚本和 shell 脚本 bash 脚本仅是 shell 脚本的一种,csh 脚本也是 shell 脚本的一种。bash 脚本也可以称为 shell 脚本

mysql两个字段相减_MySQL 中NULL和空值的区别?

作为后台开发,在日常工作中如果要接触Mysql数据库,那么不可避免会遇到Mysql中的NULL和空值。那你知道它们有什么区别吗?学不动了,也不想知道它们有什么区别。大兄弟,不行啊,要面试!前些天我的好…

做好计划事半功倍论文_Picocli 2.0:事半功倍

做好计划事半功倍论文介绍 Picocli是一个单文件命令行解析框架,它使您几乎不需要任何代码即可创建命令行应用程序。 使用Option或Parameters注释应用程序中的字段,picocli将分别使用命令行选项和位置参数填充这些字段。 例如: Command(name …

halcon python缺陷检测_Halcon学习笔记之缺陷检测(一)

*surface_scratch.hdev:extraction of surface scratches via local thresholding and morphological post-processing*dev_close_window()dev_update_window(‘off’)******step: acquire image //获取图片*****read_image(Image,’surface_scratch’) //读入图片名为’surfac…

Linux 脚本文件中开头的#!/bin/bash和#!/bin/sh是什么意思

解释 #!/bin/sh:表示此脚本使用 /bin/sh 来解释执行,#! 是特殊的表示符,其后面跟的是解释此脚本的 shell 的路径。 我们知道 shell 有很多种,例如,bash、csh、sh等,sh 是其中的一种,命令文件所…

srp unity_SRP是骗局

srp unity根据罗伯特马丁 ( Robert Martin)的 《 清洁法 》( Clean Code) ,“ 单一责任原则 ”意味着“一个阶级应该只有一个改变的理由”。 让我们尝试解密这个模糊的语句,看看它如何帮助我们设计更好的面…

html5app大赛,Anyoffice -HTML5大赛 悦心(基于H5开发安卓音乐app)-项目总结

悦心,一款音乐播放器应用。由“女立方”团队开发。眼下。较为流行的音乐播放器有QQ音乐、网易云音乐、多米音乐等。“悦心”音乐播放器的主要功能,提供音乐数据库,点击列表播放音乐,还可对歌曲进行收藏。加入专属音乐心情功能。1.歌曲播放过程…

如何执行shell脚本文件

文章目录 一、使用 shell 命令解释器执行脚本二、使用命令 source 执行脚本文件三、使用路径方式执行脚本文件为什么不能在当前目录直接执行当前目录下的脚本文件呢?四、使用命令 exec 执行脚本文件五、它们有什么区别六、验证是否开启子进程(一)通过父 shell 中的变量是否正…

python 40位的数减个位数_Python——进制表示与转换

在前面两篇文章中介绍了基本的数据类型(Python——记录3——数据类型1,Python——记录4——数据类型2),其中讲到浮点数的计算是通过转换成二进制进行的,那么到底什么是二进制,以及计算机到底包含了哪些进制呢?其实0和1…

javaee概览_Java 9概览

javaee概览对于许多Java 9来说,似乎是一个维护版本,它推动了不能在Java 8中实现的项目Jigsaw。但是,随着JDK中的新模块系统以及与之相关的许多内部更改,Java 9也带来了开发人员工具箱中一些很棒的新内容。 以下是重点内容&#xf…

Linux 命令之 source -- 在当前Shell环境中从指定文件读取和执行命令

文章目录一、命令介绍二、命令格式三、命令示例一、命令介绍 source 命令会在当前 Shell 环境中从指定文件读取和执行命令。source 命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。 source 命令(从 C Shell 而…

opc调试软件_组态王和三菱OPC软件完美演绎天塔之光

许多朋友因为在学习组态王的过程中因为没有实物PLC而发愁,这里我通过天塔之光实例分享一个三菱OPC软件模拟实物PLC与组态王通信的方法。一、需要软件组态王软件三菱PLC编程软件GX Works2三菱OPC软件MX OPC Configurator二、控制要求主画面如上图所示的天塔灯光&…

jar混淆,防止反编译,Allatori工具混淆jar包

文章目录 Allatori工具简介下载解压配置config.xml注意事项 Allatori工具简介 官网地址:https://allatori.com/ Allatori不仅混淆了代码,还最大限度地减小了应用程序的大小,提高了速度,同时除了你和你的团队之外,任何人…

计算机基础知识学前自测,2011计算机二级C语言学前自测题:DOS的基本操作

DOS的基本操作1.DOS系统启动后,下列文件中常驻内存的是( )。A)DOS.COM B)COMMAND.COMC)DISKCOPY.COM D)SYS.COM2.若当前盘为C盘,在A盘目录\data中只有文本文件test.DAT,A 盘当前目录为根目录,则查看该文件的内容可使用的命令是( )…