文章目录

  • configure
  • make
  • make install
  • 关于文件 configure 的简单介绍
  • 其它命令简介

C 语言开发的应用程序的源码包常以 .tar.gz 为扩展名,并且这些源码包通常使用 GNU 的 AUTOCONF 和 AUTOMAKE 生成编译配置文件,我们拿到这样的软件包后,执行下面的安装三部曲就可以完成安装了。

想要了解 AUTOCONF 和 AUTOMAKE 这两个东西到底是干什么的,猛戳此链接:https://www.zhihu.com/question/22644913

configure

你需要进入到源码包的根目录中,再执行这个命令,该命令会对你的系统进行编译环境检测,并且会生成符合 GNU 规范的文件 Makefile,为下一步的编译做准备,你可以通过加上参数来对安装进行控制,比如代码:

./configure –prefix=/usr

说明:
执行命令 configure 必须要指明具体的路径,该指令文件在源码包的根目录下,所以指定相对路径 ./configure 就可以执行了,为什么要指定具体的路径?因为系统根本不知道你的指令文件在哪里,那些不要你指明具体路径就可以直接执行的指令是因为这些指令文件所在目录早已配置到环境变量 PATH 中了,但是你下载的源码包的根目录根本不在环境变量 PATH 中,所以当然需要你自己指明才行。

–prefix=/usr 意思是将该软件安装在 /usr 下面,执行文件就会安装在 /usr/bin (而不是默认的 /usr/local/bin),资源文件就会安装在 /usr/share(而不是默认的 /usr/local/share)。具体可以使用哪些选项,你可以通过 ./configure --help 察看详细的帮助说明。

make

这一步就是编译,大多数的源代码包要通过这一步进行编译(当然有些 perl 或 python 编写的软件需要调用 perl 或 python 来进行编译)。如果在 make 过程中出现 error ,你就要记下错误代码,然后你可以向开发者提交 bugreport(一般在 INSTALL 里有提交地址),也可能是你的系统少了一些依赖库导致的错误,这些需要自己仔细研究错误代码。

比如错误提示:

make: *** 没有指明目标并且找不到 Makefile。 停止。

问题很明了,没有 Makefile,怎么办,原来是要先 ./configure 一下,再执行编译命令 make

make install

这条命令用来进行安装程序的,当然有些软件需要先运行 make checkmake test 来进行一些检测,这一步一般需要你有 root 权限(因为要向系统写入文件)。安装成功后通常你还可以执行 make clean 删除一些临时文件。

如果用 bin_PROGRAMS 宏的话,程序会被安装至 /usr/local/bin 这个目录。

关于文件 configure 的简单介绍

文件 configure 是一个 shell 脚本,AUTOCONF 和 AUTOMAKE 就是用来生成文件 configure 的。这个脚本文件可以自动设定源程序以符合各种类 Unix 操作系统的特性,并且根据系统变量及环境产生合适的 Makefile 文件或是 C 的头文件(header file),让源代码程序可以很方便地在这些不同的系统上被编译连接。

其它命令简介

  1. make clean:清除编译产生的可执行文件及目标文件(object file,*.o)。
  2. make distclean:除了清除可执行文件和目标文件外,把 configure 所产生的 Makefile 也清除掉。
  3. make dist:将程序源代码和相关的档案压缩打包成一个压缩文件以供发布。执行完在目录下会产生一个以 PACKAGE-VERSION.tar.gz 为名称的文件。 PACKAGEVERSION 这两个变量是根据 configure.in 文件中 AM_INIT_AUTOMAKE(PACKAGE,VERSION) 的定义。
  4. make distcheck:和 make dist 类似,使用该命令完成压缩后会去检测压缩文件是否正常。也就是说该命令除了会把程序的源代码和相关文件压缩打包成 .tar.gz 文件外,还会自动把这个压缩文件解开,执行 configure,并且进行 make 的动作,确认编译无误后,会显示这个 .tar.gz 文件可供发布了。

Linux 应用程序的源码包如何安装?相关推荐

  1. LinuxStudyNote(39)-Linux软件包管理(1)-Linux软件包简介之源码包与RPM包、源码包的优缺点、RPM二进制包的优缺点

    Linux软件包简介 1.软件包分类 a.源码包 源码包顾名思义,就是开放源代码的安装包 脚本安装包 脚本安装包是在源码包的基础上加上了安装的图形界面, 这种软件包很少见,原因在于它需要专门的人员来进 ...

  2. 【CyberSecurityLearning 37】网络安全常用Linux系统命令以及 源码包的安装过程

    目录 一.Linux系统中以下目录的作用 二.linux系统中以下颜色表示的文件类型 三.Linux系统基础命令 1.uname -a  内核版本号查询 2.fdisk  -l  查看硬盘以及分区 3 ...

  3. Linux学习笔记15—RPM包的安装OR源码包的安装

    RPM安装命令 1. 安装一个rpm包 rpm –ivh 包名 "-i" : 安装的意思 "-v" : 可视化 "-h" : 显示安装进度 ...

  4. Linux软件包管理之源码包、脚本安装包

    目录 1.源码包和RPM包的区别 RPM包和源码包默认安装位置: 由于安装位置不同带来的影响 2.源码包安装 ①.安装准备 ②.安装注意事项 ③.安装源码包 3.源码包卸载 4.脚本安装包 5.总结 ...

  5. linux top 源码,在Linux系统中下载源码包安装Topgrade的方法,附Topgrade选项说明

    本文介绍在Linux操作系统中下载源码包安装Topgrade的方法,即下载topgrade-v2.3.0-x86_64-unknown-linux-gnu.tar.gz包并进行安装,经测试,在Ubun ...

  6. zabbix 3.2.2 server端(源码包)安装部署 (一)【转】

    环境准备: 操作系统 CentOS 6.8 2.6.32-642.11.1.el6.x86_64 zabbix server 172.16.10.150 zabbix agent 172.16.10. ...

  7. 软件的安装(包括yum仓库与源码包的安装)

    软件的安装 实验背景: 为了提高Linux服务器的易用性.扩展功能,安装软件包是管理员必备的技能,这其中又以RPM方式的安装操作最基础.最常用. 另外有时候需要解决依赖关系,要配置yum仓库.YUM ...

  8. Nginx实战基础篇一 源码包编译安装部署web服务器

    Nginx实战基础篇一 源码包编译安装部署web服务器 版权声明: 本文遵循"署名非商业性使用相同方式共享 2.5 中国大陆"协议 您可以自由复制.发行.展览.表演.放映.广播或通 ...

  9. 如何在源码包编译安装的 LEMP 环境下开启 OpenSSL 功能

    如何在源码包编译安装的 LEMP 环境下开启 OpenSSL 功能 Hello,大家好!我是--邪恶君子! 今天,给大家分享一下解决源码包编译安装 LEMP 环境下开启 OpenSSL 功能问题的过程 ...

最新文章

  1. 常见的IaaS安全问题与缓解方法
  2. oracle numtodsinterval and numtoyminterval 使用法则
  3. 【视频】vue指令之v-if、v-bind
  4. VS扩展开发 一 导航
  5. Java EE 8 MVC:使用表单参数
  6. hello一直显示与服务器断开,新手问题--服务器环境部署hello world
  7. C#下载大文件并实现断点续传
  8. 频率法:数组排序的另一种思路
  9. (转)30分钟正则表达式入门
  10. Android学习系列(7)--App轮询服务器消息
  11. 深入解读Docker底层技术cgroup系列(4)——cgroup子系统cpu
  12. Docker seaweedfs
  13. mapxtreme 查找指定位置的图元
  14. adb shell /system/bin/screencap screenrecord
  15. 从再生龙(clonezilla)镜像直接提取文件
  16. Java---设计模式app小软件汇总应用
  17. javaWeb-第一版
  18. 河南高考成绩位次查询2021,2021年河南高考状元多少分是谁,河南高考状元名单资料...
  19. LoadRunner 回放出错
  20. supervisord如何优雅的新加服务

热门文章

  1. oauth2和jwt_OAuth2,JWT,Open-ID Connect和其他令人困惑的事物
  2. 字节流和字符流哪个不刷新_不喜欢节流吗?
  3. java8 streams_Java 8 Streams API作为友好的ForkJoinPool外观
  4. apache karaf_未来是Apache Karaf上的微服务架构
  5. AWS Elasticsearch后模式
  6. 使用Java 8 Lambda表达式将实体映射到DTO
  7. java 方法注解_使用Java注解不正确的方法
  8. servlet面试常问问题_50个Servlet面试问答
  9. jclouds_使用jclouds在S3上分段上传
  10. 在Junit上使用Kafka