Linux 命令详解(三)./configure、make、make install 命令

这些都是典型的使用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)。

进行指定安装,用到./configure --prefix

具体解释:.表示当前目录。/是目录分隔符。合起来就是当前目录下

指定安装路径
不指定prefix,则可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc。其它的资源文件放在/usr /local/share。

你要卸载这个程序,要么在原来的make目录下用一次make uninstall(前提是make文件指定过uninstall),要么去上述目录里面把相关的文件一个个手工删掉。
指定prefix,直接删掉一个文件夹就够了。

(把安装路径配置为根目录。你接下来运行make和make install后,就可以在根目录下找到所安装的文件。)

同时一些软件的配置文件你可以通过指定 –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开发环境-的人去重新编译。

原文地址:https://www.cnblogs.com/cfas/p/11956915.html

时间: 2024-11-09 19:23:51

Linux 命令详解(三)./configure、make、make install 命令的相关文章

linux常用命令详解 (二)文件处理命令

◆ 文件处理命令:file.mkdir.grep.dd.find.mv.ls.diff.cat.ln: 系统信息存放在文件里,文件与普通的公务文件类似.每个文件都有自己的名字.内容.存放地址及其它一些管理信息,如文件的用户.文件的大小等.文件可以是一封信.一个通讯录,或者是程序的源语句.程序的数据,甚至可以包括可执行的程序和其它非正文内容.Linux文件系统具有良好的结构,系统提供了很多文件处理程序.这里主要介绍常用的文件处理命令.file1.作用 件内容判断文件类型,使用权限是所有用户.2.格

adb命令详解(一)——模拟器相关命令集

对于Android开发者来说,想要测试自己开发的程序在所有Android版本上的效果,拥有一台Android真机是不够,尽管你会刷机,那只会浪费你宝贵的时间,这个时候用ADB工具情况就不一样了,你可以尽情的在所有版本的Android模拟器上测试自己的APP是否达到你期望的效果. 另一种情况就是最新的开发工具Android Studio在启动模拟器的时候要下载HAXM,甚至还要繁琐的配置,如果这个时候不想这么麻烦,那么ADB命令启动模拟器将是你不错的选择.下面我们就介绍所有与模拟器相关的命令. 1

Linux命令详解 三

Linux用户和组的属性与权限本章结构1.用户账号和组账号概述2.用户账号和组账号管理3.查询账号信息4.查看目录或文件的属性5.设置目录或文件的权限6.设置目录或文件的归属 前言在linux中一切都是文件(文件夹和硬件设备是特殊的文件),如果有可能尽量使用文本文件.文本文件是人和机器能理解的文件,也成为人和机器进行交流的最好途径.由于所有的配置文件都是文本,所以你只需要一个最简单的编辑器就可以修改.由于修改文本文件如此简单,所以Linux系统本身肯定要加以规范.这就引出了用户(组)和权限这2个

Linux route命令详解和使用,以及网卡命令详解

一 路由的基础知识:1)路由概念路由: 跨越从源主机到目标主机的一个互联网络来转发数据包的过程路由器:能够将数据包转发到正确的目的地,并在转发过程中选择最佳路径的设备路由表:在路由器中维护的路由条目,路由器根据路由表做路径选择直连路由:当在路由器上配置了接口的IP地址,并且接口状态为up的时候,路由表中就出现直连路由项静态路由:是由管理员手工配置的,是单向的.默认路由:当路由器在路由表中找不到目标网络的路由条目时,路由器把请求转发到默认路由接口 . 2)静态路由和默认路由的特点静态路由特点:路由

【Linux命令详解】3、文件和命令查找

3.文件和命令查找 本节主要学习在Linux系统下和命令查找的相关命令,这些命令有whereis.which等. 3.1 whereis:查找制定文件.命令和手册的位置 使用whereis命令可以查找制定文件.命令和手册页的位置. 3.1.1命令语法: whereis[选项][文件] 3.1.2选项参数: whereis命令选项含义 选项 选项含义 -b 只搜索二进制文件 -m 只搜索手册页部分 -u 不寻常的条目搜索 3.1.3实例: 例1:使用指令"whereis"查看指令&quo

【Linux命令详解】10、查看历史命令—[ history]

10.history     可以查看命令历史记录,每一条命令前面都会有一个序列号标示. 10.1.1 命令语法:     history [选项] 10.1.2 选项参数 history命令选项参数含义 选项              选项含义 -c                 清除命令历史记录 -w                让bash将历史命令立即从内存写到.bash_history文件 -a                 将目前新增的history历史命令写入.bash_his

Linux 命令之 scp 命令详解

Linux 命令之 scp 命令详解 一.scp 简介 scp 命令用于不同主机之间复制文件和目录. scp 是 secure copy 的缩写,是 基于 ssh 协议进行安全的远程文件拷贝命令. scp 想要免密进行复制,需要发送秘钥给相应的节点. scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版. 二.scp 命令语法 scp [-options] [[[email protected]]host1:]source_file [[[email protected]]host

Ubuntu Linux系统下apt-get命令详解

Ubuntu Linux系统下apt-get命令详解(via|via) 常用的APT命令参数: apt-cache search package 搜索包 apt-cache show package 获取包的相关信息,如说明.大小.版本等 sudo apt-get install package 安装包 sudo apt-get install package - - reinstall 重新安装包 sudo apt-get -f install 修复安装"-f = ——fix-missing&

Linux之htop命令详解

Linux之htop命令详解 一.htop简介 htop 是Linux系统中的一个互动的进程查看器,一个文本模式的应用程序(在控制台或者X终端中),需要ncurses. 与Linux传统的top相比,htop更加人性化.它可让用户交互式操作,支持颜色主题,可横向或纵向滚动浏览进程列表,并支持鼠标操作. 与top相比,htop有以下优点: 可以横向或纵向滚动浏览进程列表,以便看到所有的进程和完整的命令行. 在启动上,比top 更快. 杀进程时不需要输入进程号. htop 支持鼠标操作. htop

Linux上的free命令详解

Linux上的free命令详解 转自: http://www.cnblogs.com/coldplayerest/archive/2010/02/20/1669949.html 解释一下Linux上free命令的输出. 下面是free的运行结果,一共有4行.为了方便说明,我加上了列号.这样可以把free的输出看成一个二维数组FO(Free Output).例如: FO[2][1] = 24677460 FO[3][2] = 10321516 1          2          3