Linux命令详解(三).configure、make、makeinstall命令
linuxshell脚本怎么运行
这些都是典型的使⽤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/bi
n (⽽不是默认的 /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这两个变数是根据configure.in⽂件中AM_INIT_AUTOMAKE(PACKAGE,VERSION)的定义。在此范例中会产⽣test-1.的档案。
  make distcheck:和make dist类似,但是加⼊检查包装后的压缩⽂件是否正常。这个⽬标除了把程序
和相关⽂件包装成⽂件外,还会⾃动把这个压缩⽂件解开,执⾏ configure,并且进⾏make all 的动作,确认编译⽆误后,会显⽰这个⽂件可供发布了。这个检查⾮常有⽤,检查过关的包,基本上可以给任何⼀个具备GNU开发环境-的⼈去重新编译。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。