这些都是典型的使用GNU的AUTOCONF和AUTOMAKE产生的程序的安装步骤

一、基本信息

1、./configure 是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本。

2、make 是用来编译的,它从Makefile中读取指令,然后编译。

3、make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。

注意:AUTOMAKE和AUTOCONF是非常有用的用来发布C程序的东西。

二、详细解释

1、configure命令

这一步一般用来生成 Makefile,为下一步的编译做准备,你可以通过在 configure 后加上参数来对安装进行控制,比如代码:./configure –prefix=/usr 意思是将该软件安装在 /usr 下面,执行文件就会安装在 /usr/bin (而不是默认的 /usr/local/bin),资源文件就会安装在 /usr/share(而不是默认的/usr/local/share)。同时一些软件的配置文件你可以通过指定 –sys-config= 参数进行设定。有一些软件还可以加上 –with、–enable、–without、–disable 等等参数对编译加以控制,你可以通过允许 ./configure –help 察看详细的说明帮助。

2、make

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

可能遇到的错误:make *** 没有指明目标并且找不到 makefile。 停止。问题很明了,没有Makefile,怎么办,原来是要先./configure 一下,再make。

3、make insatll

这条命令来进行安装(当然有些软件需要先运行 make check 或 make test 来进行一些测试),这一步一般需要你有 root 权限(因为要向系统写入文件)。

三、扩展说明

Linux的用户可能知道,在Linux下安装一个应用程序时,一般先运行脚本configure,然后用make来编译源程序,在运行make install,最后运行make clean删除一些临时文件。使用上述三个自动工具,就可以生成configure脚本。运行configure脚本,就可以生成Makefile文件,然后就可以运行make、make install和make clean。

configure是一个shell脚本,它可以自动设定源程序以符合各种不同平台上Unix系统的特性,并且根据系统叁数及环境产生合适的Makefile文件或是C的头文件(header file),让源程序可以很方便地在这些不同的平台上被编译连接。

这时,就可运行configure脚本了,运行configure脚本,就可产生出符合GNU规范的Makefile文件了: $ ./configure

到此时,就可以运行make进行编译,在运行make install进行安装了,最后运行make clean删除临时文件。

$ make $ make install (注:运行这个要有足够的权限) $ make clean

利用configure所产生的Makefile文件有几个预设的目标可供使用,其中几个重要的简述如下:

make all:产生我们设定的目标,即此范例中的可执行文件。只打make也可以,此时会开始编译原始码,然后连结,并且产生可执行文件。

make clean:清除编译产生的可执行文件及目标文件(object file,*.o)。

make distclean:除了清除可执行文件和目标文件外,把configure所产生的Makefile也清除掉。

make install:将程序安装至系统中。如果原始码编译无误,且执行结果正确,便可以把程序安装至系统预设的可执行文件存放路径。如果用bin_PROGRAMS宏的话,程序会被安装至/usr/local/bin这个目录。

make dist:将程序和相关的档案包装成一个压缩文件以供发布。执行完在目录下会产生一个以PACKAGE-VERSION.tar.gz为名称的文件。 PACKAGE和VERSION这两个变数是根据configure.in文件中AM_INIT_AUTOMAKE(PACKAGE,VERSION)的定义。在此范例中会产生test-1.0.tar.gz的档案。

make distcheck:和make dist类似,但是加入检查包装后的压缩文件是否正常。这个目标除了把程序和相关文件包装成tar.gz文件外,还会自动把这个压缩文件解开,执行 configure,并且进行make all 的动作,确认编译无误后,会显示这个tar.gz文件可供发布了。这个检查非常有用,检查过关的包,基本上可以给任何一个具备GNU开发环境-的人去重新编译。

参考:http://www.linuxidc.com/Linux/2011-02/32211.htm

Linux命令详解:./configure、make、make install 命令相关推荐

  1. linux—pwd命令详解(一天一个命令)

    概述: pwd 是Print Working Directory的缩写,其功能是显示当前所在工作目录的全路径.主要用在当不确定当前所在位置时,通过pwd来查看当前目录的绝对路径. 语法: [root@ ...

  2. <Linux>《Linux 之 ps 命令详解大全(含实用命令)》

    <Linux 之 ps 命令详解大全(含实用命令)> 1 常用命令 1.1 显示所有当前进程 1.2 显示所有当前进程 1.3 显示所有当前进程 1.4 根据用户过滤进程 1.5 根据 C ...

  3. 汇编语言DEBUG命令详解||汇编命令||DEBUG的常用命令:A,U,R,T,D,E,Q 等等

    汇编命令 汇编语言Debug命令详解 DEBUG的常用命令:A,U,R,T,D,E,Q 等等 汇编语言DEBUG命令详解 文章目录 汇编语言DEBUG命令详解 R命令的使用 H命令的使用 D命令的使用 ...

  4. oracle中imp命令详解,ORACLE EXPDP IMPDP数据导入导出命令详解及同EXP IMP命令详细对照...

    ORACLE EXPDP IMPDP数据导入导出命令详解及同EXP IMP 命令详细对比 一.EXPDP IMPDP EXP IMP 可以实现 1.可以实现逻辑备份和逻辑恢复 2.可以在数据库用户之间 ...

  5. go标准命令详解0.2 go install

    搬运自github赫林的go_command_tutorial,绝对干货,感谢作者. 0.2 go install 命令Go install用于编译并安装指定的代码包及它们的依赖包.当指定的代码包的依 ...

  6. kali中steghide命令工具教程;7z命令详解;kali中base64命令详解

    目录 kali中steghide命令工具教程 7z命令详解 kali中base64命令详解 例:解码文本里的base64编码 kali中steghide命令工具教程 根据此博客学习(12条消息) 隐写 ...

  7. linux下如何使用configure/make/make install命令编译安装卸载程序

    源码的安装一般由3个步骤组成:配置(configure).编译(make).安装(make install).安装成功的源码就是所谓的可执行文件,在你不需要的时候,也是可以删除/卸载(remove/u ...

  8. Linux命令详解(7)-find命令(一)

    终于下决心写这个命令的详解,挑站下自己的毅力,争取尽量写多点. find命令,跟英文意思一致,用于在磁盘内查找文件.目录等. --help可以获得命令格式等简单帮助信息. 语法: find 路径  - ...

  9. cat命令详解_Linux | 账号管理及命令使用详解

    引言   在Linux系统中,我们常常会看到目录或文件的所属关系: [root@linux01 ~]# ll -d test.sh -rw-r----- 1 root root 144 11月 20 ...

  10. linux检查网络是否通畅_网络基础Ping命令详解(使用Ping这命令来测试网络连通)...

    相关知识点 BIOS 在计算机领域,BIOS是 "Basic Input Output System"的缩略语,译为"基本输入输出系统", 与前者读法相同.计算 ...

最新文章

  1. hashmap存多少条数据_干货 | 面试官想问的HashMap,都在这一篇里面了!
  2. 9.获取当前时区时间和utc时间的工具方法
  3. Android学习之Intent使用
  4. Android单元测试读写文件,xml-如何为android单元测试提供数据文件
  5. ajax获取cpu的占用率,JavaScript获取当前cpu使用率的方法
  6. Problem D. Nothing is Impossible
  7. MySQL使用小技巧(二)——MySQL忘记密码怎么办
  8. 【事件驱动】【数码管识别】 一台电脑能接多少台USB设备
  9. js数组再倒数第二个添加元素_js 循环对象数组将元素逐个添加至新数组问题
  10. Janusgraph索引
  11. Dell安装Ubuntu教程
  12. 手机如何测光照度_5分钟教你学会如何测光
  13. python的logo的代码_简单几步,100行代码用Python画一个蝙蝠侠的logo
  14. 【JavaScript】为什么是script error.
  15. 将两个数组不同的元素拼接成一个字符串
  16. 大数据与云计算网课答案
  17. sharding异常之no table route info
  18. Excel数据表添加页眉页脚
  19. 与西安协同销售总监赵建春先生避风塘聊天记
  20. 【王喆-推荐系统】(task3)深度学习基础和TensorFlow入门(基础架构篇)

热门文章

  1. xutils,afinal的数据库升级要注意的地方
  2. 深度学习 常用python操作(1)
  3. 【SpringBoot2 从0开始】开发小技巧 - lombok、devtools、Spring Initailizr
  4. linux nc命令用法举例
  5. reactjs脚手架目录结构说明
  6. 重置mysql密码的命令
  7. 【网址收藏】IDEA社区版(Community)和付费版(UItimate)的区别
  8. kubeadm集群修改k8s证书时间到99年
  9. etcd介绍:可作为KV数据库、服务发现、配置中心和分布式锁使用、etcd集群搭建
  10. k8s Service的类型和实现流程图解