Linux ./configureITeye - AG环亚娱乐

Linux ./configureITeye

2019年03月14日14时57分27秒 | 作者: 昆琦 | 标签: 装置,选项,一个 | 浏览: 949

源码的装置一般由3个进程组成:装备(configure)、编译(make)、装置(make install),具体的装置办法一般作者都会给出文档,这儿首要评论装备(configure)。Configure是一个可履行脚本,它有许多选项,运用指令./configure –help输出具体的选项列表,如下:
-bash-3.00# ./configure help
Usage: configure [options] [host]
Options: [defaults in brackets after descriptions]
Configuration:
cache-file=FILE  cache test results in FILE
help  print this message
no-create  do not create output files
quiet, silent  do not print `checking... messages
version  print the version of autoconf that created configure
Directory and file names:
prefix=PREFIX  install architecture-independent files in PREFIX
  [/usr/local]
exec-prefix=EPREFIX  install architecture-dependent files in EPREFIX
  [same as prefix]
bindir=DIR  user executables in DIR [EPREFIX/bin]
……….(省掉若干)
许多的选项,个人以为,你可以疏忽其他的全部,但请把—prefix加上。这儿以装置supersparrow-0.0.0为例,咱们计划把它装置到目录 /usr/local/supersparrow,所以在supersparrow-0.0.0目录履行带选项的脚本./configure prefix=/usr/local/supersparrow,履行成功后再编译、装置(make,make install);装置完结将主动生成目录supersparrow,并且该软件一切的文件都被仿制到这个目录。为什么要指定这个装置目录?是为了今后的保护便利,假设没有用这个选项,装置进程完毕后,该软件所需的软件被仿制到不同的体系目录下,很难弄清楚究竟仿制了那些文件、都仿制到哪里去了—根本上是乌烟瘴气。

用了—prefix选项的另一个优点是卸载软件或移植软件。当某个装置的软件不再需求时,只须简略的删去该装置目录,就可以把软件卸载得干干净净;移植软件只需复制整个目录到别的一个机器即可(相同的操作体系)。

一个小选项有这么便利的效果,主张在实践作业中多多运用



configure脚本有许多的指令行选项.对不同的软件包来说,这些选项或许会有改动,可是许多根本的选项是不会改动的.带上help选项履行configure脚本可以看到可用的一切选项.虽然许多选项是很少用到的,可是当你为了特别的需求而configure一个包时,知道他们的存在是很有优点的.下面临每一个选项进行简略的介绍:

cache-file=FILE
configure会在你的体系上测验存在的特性(或许bug!).为了加快随后进行的装备,测验的成果会存储在一个cache file里.当configure一个每个子树里都有configure脚本的杂乱的源码树时,一个很好的cache file的存在会有很大协助.

help
输出协助信息.即使是有经历的用户也偶然需求运用运用help选项,由于一个杂乱的项目会包括附加的选项.例如,GCC包里的configure脚本就包括了答应你操控是否生成和在GCC中运用GNU汇编器的选项.

no-create
configure中的一个首要函数会制造输出文件.此选项阻挠configure生成这个文件.你可以以为这是一种演习(dry run),虽然缓存(cache)依然被改写了.

quiet
silent
当configure进行他的测验时,会输出扼要的信息来通知用户正在作什么.这样作是由于configure或许会比较慢,没有这种输出的话用户将会被扔在一旁疑问正在发作什么.运用这两个选项中的任何一个都会把你扔到一旁.(译注:这两句话比较有意思,原文是这样的:If there was no such output, the user would be left wondering what is happening. By using this option, you too can be left wondering!)

version
打印用来发作configure脚本的Autoconf的版别号.

prefix=PEWFIX
prefix是最常用的选项.制造出的Makefile会检查随此选项传递的参数,当一个包在装置时可以彻底的从头安顿他的结构独立部分. 举一个比方,当装置一个包,例如说Emacs,下面的指令将会使Emacs Lisp file被装置到"/opt/gnu/share":
$ ./configure prefix=/opt/gnu

exec-prefix=EPREFIX
与prefix选项相似,可是他是用来设置结构倚赖的文件的装置方位.编译好的emacs二进制文件就是这样一个问件.假设没有设置这个选项的话,默许运用的选项值将被设为和prefix选项值相同.

bindir=DIR
指定二进制文件的装置方位.这儿的二进制文件界说为可以被用户直接履行的程序.

sbindir=DIR
指定超级二进制文件的装置方位.这是一些一般只能由超级用户履行的程序.

libexecdir=DIR
指定可履行支撑文件的装置方位.与二进制文件相反,这些文件从来不直接由用户履行,可是可以被上面说到的二进制文件所履行.

datadir=DIR
指定通用数据文件的装置方位.

sysconfdir=DIR
指定在单个机器上运用的只读数据的装置方位.

sharedstatedir=DIR
指定可以在多个机器上同享的可写数据的装置方位.

localstatedir=DIR
指定只能单机运用的可写数据的装置方位.

libdir=DIR
指定库文件的装置方位.

includedir=DIR
指定C头文件的装置方位.其他言语如C++的头文件也可以运用此选项.

oldincludedir=DIR
指定为除GCC外编译器装置的C头文件的装置方位.

infodir=DIR
指定Info格局文档的装置方位.Info是被GNU工程所运用的文档格局.

mandir=DIR
指定手册页的装置方位.

srcdir=DIR
这个选项对装置没有效果.他会通知configure源码的方位.一般来说不必指定此选项,由于configure脚本一般和源码文件在同一个目录下.

program-prefix=PREFIX
指定将被加到所装置程序的姓名上的前缀.例如,运用program-prefix=g来configure一个名为tar的程序将会使装置的程序被命名为gtar.当和其他的装置选项一同运用时,这个选项只有当他被`Makefile.in文件运用时才会作业.

program-suffix=SUFFIX
指定将被加到所装置程序的姓名上的后缀.

program-transform-name=PROGRAM
这儿的PROGRAM是一个sed脚本.当一个程序被装置时,他的姓名将经过`sed -e PROGRAM来发作装置的姓名.

build=BUILD
指定软件包装置的体系渠道.假设没有指定,默许值将是host选项的值.

host=HOST
指定软件运转的体系渠道.假设没有指定,将会运转`config.guess来检测.

target=GARGET
指定软件面向(target to)的体系渠道.这首要在程序言语东西如编译器和汇编器上下文中起效果.假设没有指定,默许将运用host选项的值.

disable-FEATURE
一些软件包可以挑选这个选项来供给为大型选项的编译时装备,例如运用Kerberos认证体系或许一个实验性的编译器最优装备.假设默许是供给这些特性,可以运用disable-FEATURE来禁用它,这儿FEATURE是特性的姓名.例如:
$ ./configure disable-gui

-enable-FEATURE[=ARG]
相反的,一些软件包或许供给了一些默许被制止的特性,可以运用enable-FEATURE来重用它.这儿FEATURE是特性的姓名.一个特性或许会承受一个可选的参数.例如:
$ ./configure enable-buffers=128
`enable-FEATURE=no与上面说到的disable-FEATURE是同义的.

with-PACKAGE[=ARG]
在自由软件社区里,有运用已有软件包和库的优异传统.当用configure来装备一个源码树时,可以供给其他现已装置的软件包的信息.例如,倚赖于Tcl和Tk的BLT器材东西包.要装备BLT,或许需求给configure供给一些关于咱们把Tcl和Tk装的何处的信息:
$ ./configure with-tcl=/usr/local with-tk=/usr/local
with-PACKAGE=no与下面将说到的without-PACKAGE是同义的.

without-PACKAGE
有时候你或许不想让你的软件包与体系已有的软件包交互.例如,你或许不想让你的新编译器运用GNU ld.经过运用这个选项可以做到这一点:
$ ./configure without-gnu-ld

x-includes=DIR
这个选项是with-PACKAGE选项的一个特例.在Autoconf开端被开发出来时,盛行运用configure来作为Imake的一个变通办法来制造运转于X的软件.x-includes选项供给了向configure脚本指明包括X11头文件的目录的办法.

x-libraries=DIR
相似的,x-libraries选项供给了向configure脚本指明包括X11库的目录的办法.

在源码树中运转configure是不必要的一同也是欠好的.一个由configure发作的杰出的Makefile可以构筑源码归于另一棵树的软件包.在一个独立于源码的树中构筑派生的文件的优点是很明显的:派生的文件,如方针文件,会杂乱的分布于源码树.这也使在另一个不同的体系或用不同的装备选项构筑相同的方针文件十分困难.主张运用三棵树:一棵源码树(source tree),一棵构筑树(build tree),一棵装置树(install tree).这儿有一个很挨近的比方,是运用这种办法来构筑GNU malloc包:
$ gtar zxf mmalloc-1.0.tar.gz
$ mkdir build cd build
$ ../mmalloc-1.0/configure
creating cache ./config.cache
checking for gcc... gcc
checking whether the C compiler (gcc ) works... yes
checking whether the C compiler (gcc ) is a cross-compiler... no
checking whether we are using GNU C... yes
checking whether gcc accepts -g... yes
checking for a BSD compatible install... /usr/bin/install -c
checking host system type... i586-pc-linux-gnu
checking build system type... i586-pc-linux-gnu
checking for ar... ar
checking for ranlib... ranlib
checking how to run the C preprocessor... gcc -E
checking for unistd.h... yes
checking for getpagesize... yes
checking for working mmap... yes
checking for limits.h... yes
checking for stddef.h... yes
updating cache ../config.cache
creating ./config.status
这样这棵构筑树就被装备了,下面可以持续构筑和装置这个包到默许的方位/usr/local:
$ make all make install


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1440383
一个软件包经过编译源代码装置后,怎么彻底的卸载??

假设原先的source还在的话,许多source的Makefile都有写uninstall规矩,直接在Souce里make uninstall就可行,不过碰到无良作者没写的,那一句一句看Makefile里install部分他都干了些什么,然后挨个删去。
假设source没了.....那就一边抑郁吧
到目前为止, 我装的都可以make uninstall.......
(由于总是不小心装错当地, 成果就make uninstall make clean,然后从头configure......)
linux下软件的根本装置和卸载
Linux软件的装置和卸载一直是困扰许多新用户的难题。在Windows中,咱们可以运用软件自带的装置卸载程序或在操控面板中的“增加/删去程序”来完成。与其相相似,在Linux下有一个功能强大的软件装置卸载东西,名为RPM。它可以用来树立、装置、查询、更新、卸载软件。该东西是在指令行下运用的。在Shell的提示符后输入rpm,就可获得该指令的协助信息。

软件的装置

Linux下软件的装置首要有两种不同的办法。第一种装置文件名为xxx.tar.gz;另一种装置文件名为xxx.i386.rpm。以第一种办法发行的软件多为以源码办法发送的;第二种办法则是直接以二进制办法发送的。

关于第一种,装置办法如下:

1 .首要,将装置文件复制至你的目录中。例如,假设你是以root身份登录上的,就将软件复制至/root中。

#cp xxx.tar.gz /root

2 .由于该文件是被紧缩并打包的,应对其解紧缩。指令为:

#tar xvzf filename.tar.gz 假设是filename.tar.bz2格局的,应该是tar jxvf filename.tar.bz2来解压

3. 履行该指令后,装置文件按途径,解紧缩在当时目录下。用ls指令可以看到解紧缩后的文件。一般在解紧缩后发作的文件中,有“Install”的文件。该文件为纯文本文件,具体叙述了该软件包的装置办法。

4.履行解紧缩后发作的一个名为configure的可履行脚本程序。它是用于检查体系是否有编译时所需的库,以及库的版别是否满意编译的需求等装置所需求的体系信息。为随后的编译作业做准备。指令为: #./configure

假设您想把软件装置到指定目录,应该用#./configure prefix=/您自己指定的目录,比方我想把一个mlterm装置到/opt/mlterm目录中,应该如下输入

#./configure prefix=/opt/mlterm

5.检查经往后,将生成用于编译的MakeFile文件。此刻,可以开端进行编译了。编译的进程视软件的规划和计算机功能的不同,所消耗的时刻也不同。指令为: #make。

6.成功编译后,键入如下的指令开端装置:

#make install

7.装置完毕,应铲除编译进程中发作的临时文件和装备进程中发作的文件。键入如下指令:

#make clean

#make distclean

至此,软件的装置完毕。

关于第二种,其装置办法要简略得多。

同第一种办法相同,将装置文件复制至你的目录中。然后运用rpm来装置该文件。指令如下:

#rpm -i filename.i386.rpm

rpm将主动将装置文件解包,并将软件装置到缺省的目录下。并将软件的装置信息注册到rpm的数据库中。参数i的效果是使rpm进入装置形式。

软件的卸载

1.软件的卸载首要是运用rpm来进行的。卸载软件首要要知道软件包在体系中注册的称号。键入指令:

#rpm -q -a

即可查询到当时体系中装置的一切的软件包。

2. 断定了要卸载的软件的称号,就可以开端实践卸载该软件了。键入指令:

#rpm -e [package name]

即可卸载软件。参数e的效果是使rpm进入卸载形式。对名为[package name]的软件包进行卸载。由于体系中各个软件包之间彼此有依靠联系。假设因存在依靠联系而不能卸载,rpm将给予提示并中止卸载。你可以运用如下的指令来疏忽依靠联系,直接开端卸载:

#rpm -e [package name] -nodeps

疏忽依靠联系的卸载或许会导致体系中其它的一些软件无法运用

假设想知道rpm包装置到哪里了呢?

应该用 #rpm -ql [package name]

3.怎么卸载用源码包装置的软件?

最好是看README和INSTALL ;一般的情况下都有说,但大多软件没有供给源码包的卸载办法;咱们可以找到软件的装置点删去。首要看你把它装置在哪了。

比方:

假设装置软件时,指定个目录。这个问题也不会难;

比方用源码包装置gaim 的

#./configure prefix=/opt/gaim

#make

#make install

假设装置mlterm

#./configure prefix=/opt/mlterm

#make

#make install

把源码包装置的软件,都指定装置在 /opt目录中,这样不就知道了??

假设删去,就删去相应的软件目录;

有些软件要在解压装置目录中履行 make uninstall ,这样就卸载掉了

configure脚本有许多的指令行选项.对不同的软件包来说,这些选项或许会有改动,可是许多根本的选项是不会改动的.带上 help选项履行configure脚本可以看到可用的任何选项.虽然许多选项是很少用到的,可是当您为了特别的需求而configure一个包时,知道他们的存在是很有优点的.下面临每一个选项进行简略的介绍:
cache-file=FILE
configure会在您的体系上测验存在的特性(或bug!).为了加快随后进行的装备,测验的成果会存储在一个cache file里.当configure一个每个子树里都有configure脚本的杂乱的源码树时,一个很好的cache file的存在会有很大协助.
help
输出协助信息.即使是有经历的用户也偶然需求运用运用help选项,由于一个杂乱的项目会包括附加的选项.例如,GCC包里的configure脚本就包括了答应您操控是否生成和在GCC中运用GNU汇编器的选项.
no-create
configure中的一个首要函数会制造输出文档.此选项阻挠configure生成这个文档.您可以以为这是一种演习(dry run),虽然缓存(cache)依然被改写了.
quiet
silent
当configure进行他的测验时,会输出扼要的信息来通知用户正在作什么.这样作是由于configure或许会比较慢,没有这种输出的话用户将会被扔在一旁疑问正在发作什么.运用这两个选项中的任何一个都会把您扔到一旁.(译注:这两句话比较有意思,原文是这样的:If there was no such output, the user would be left wondering what is happening. By using this option, you too can be left wondering!)
version
打印用来发作configure脚本的Autoconf的版别号.
prefix=PEWFIX
prefix是最常用的选项.制造出的Makefile会检查随此选项传递的参数,当一个包在装置时可以彻底的从头安顿他的结构独自部分. 举一个比方,当装置一个包,例如说Emacs,下面的指令将会使Emacs Lisp file被装置到"/opt/gnu/share":
$ ./configure prefix=/opt/gnu
exec-prefix=EPREFIX
和prefix选项相似,可是他是用来装备结构倚赖的文档的装置方位.编译好的emacs二进制文档就是这样一个问件.假设没有装备这个选项的话,默许运用的选项值将被设为和prefix选项值相同.
bindir=DIR
指定二进制文档的装置方位.这儿的二进制文档界说为可以被用户直接履行的程式.
sbindir=DIR
指定终极二进制文档的装置方位.这是一些一般只能由终极用户履行的程式.
libexecdir=DIR
指定可履行支撑文档的装置方位.和二进制文档相反,这些文档从来不直接由用户履行,可是可以被上面说到的二进制文档所履行.
datadir=DIR
指定通用数据文档的装置方位.
sysconfdir=DIR
指定在单个机器上运用的只读数据的装置方位.
sharedstatedir=DIR
指定可以在多个机器上同享的可写数据的装置方位.
localstatedir=DIR
指定只能单机运用的可写数据的装置方位.
libdir=DIR
指定库文档的装置方位.
includedir=DIR
指定C头文档的装置方位.其他言语如C++的头文档也可以运用此选项.
oldincludedir=DIR
指定为除GCC外编译器装置的C头文档的装置方位.
infodir=DIR
指定Info格局文档的装置方位.Info是被GNU工程所运用的文档格局.
mandir=DIR
指定手册页的装置方位.
srcdir=DIR
这个选项对装置没有效果.他会通知configure源码的方位.一般来说不必指定此选项,由于configure脚本一般和源码文档在同一个目录下.
program-prefix=PREFIX
指定将被加到所装置程式的姓名上的前缀.例如,运用program-prefix=g来configure一个名为tar的程式将会使装置的程式被命名为gtar.当和其他的装置选项一同运用时,这个选项只有当他被`Makefile.in文档运用时才会作业.
program-suffix=SUFFIX
指定将被加到所装置程式的姓名上的后缀.
program-transform-name=PROGRAM
这儿的PROGRAM是个sed脚本.当一个程式被装置时,他的姓名将经过`sed -e PROGRAM来发作装置的姓名.
build=BUILD
指定软件包装置的体系渠道.假设没有指定,默许值将是host选项的值.
host=HOST
指定软件运转的体系渠道.假设没有指定,将会运转`config.guess来检测.
target=GARGET
指定软件面向(target to)的体系渠道.这首要在程式言语东西如编译器和汇编器上下文中起效果.假设没有指定,默许将运用host选项的值.
disable-FEATURE
一些软件包可以挑选这个选项来供给为大型选项的编译时装备,例如运用Kerberos认证体系或一个实验性的编译器最优装备.假设默许是供给这些特性,可以运用disable-FEATURE来禁用他,这儿FEATURE是特性的姓名.例如:
$ ./configure disable-gui
-enable-FEATURE[=ARG]
相反的,一些软件包或许供给了一些默许被制止的特性,可以运用enable-FEATURE来重用他.这儿FEATURE是特性的姓名.一个特性或许会承受一个可选的参数.例如:
$ ./configure enable-buffers=128
`enable-FEATURE=no和上面说到的disable-FEATURE是同义的.
with-PACKAGE[=ARG]

在免费软件社区里,有运用已有软件包和库的优异传统.当用configure来装备一个源码树时,可以供给其他已装置的软件包的信息.例如, 倚赖于Tcl和Tk的BLT器材东西包.要装备BLT,或许需求给configure供给一些关于咱们把Tcl和Tk装的何处的信息:
$ ./configure with-tcl=/usr/local with-tk=/usr/local
with-PACKAGE=no和下面将说到的without-PACKAGE是同义的.
without-PACKAGE
有时候您或许不想让您的软件包和体系已有的软件包交互.例如,您或许不想让您的新编译器运用GNU ld.经过运用这个选项可以做到这一点:
$ ./configure without-gnu-ld
x-includes=DIR
这个选项是with-PACKAGE选项的一个特例.在Autoconf开端被研制出来时,盛行运用configure来作为 Imake的一个变通办法来制造运转于X的软件.x-includes选项供给了向configure脚本指明包括X11头文档的目录的办法.
x-libraries=DIR
相似的,x-libraries选项供给了向configure脚本指明包括X11库的目录的办法.
在源码树中运转configure是不必要的一同也是欠好的.一个由configure发作的杰出的Makefile可以构筑源码归于另一棵树的软件包.在一个独自于源码的树中构筑派生的文档的优点是很明显的:派生的文档,如方针文档,会杂乱的分布于源码树.这也使在另一个不同的体系或用不同的装备选项构筑相同的方针文档很困难.主张运用三棵树:一棵源码树(source tree),一棵构筑树(build tree),一棵装置树(install tree).这儿有一个很挨近的比方,是运用这种办法来构筑GNU malloc包:
$ gtar zxf mmalloc-1.0.tar.gz
$ mkdir build cd build
$ ../mmalloc-1.0/configure
creating cache ./config.cache
checking for gcc... gcc
checking whether the C compiler (gcc ) works... yes
checking whether the C compiler (gcc ) is a cross-compiler... no
checking whether we are using GNU C... yes
checking whether gcc accepts -g... yes
checking for a BSD compatible install... /usr/bin/install -c
checking host system type... i586-pc-linux-gnu
checking build system type... i586-pc-linux-gnu
checking for ar... ar
checking for ranlib... ranlib
checking how to run the C preprocessor... gcc -E
checking for unistd.h... yes
checking for getpagesize... yes
checking for working mmap... yes
checking for limits.h... yes
checking for stddef.h... yes
updating cache ../config.cache
creating ./config.status
这样这棵构筑树就被装备了,下面可以持续构筑和装置这个包到默许的方位/usr/local:
$ make all make install

一个软件包经过编译源代码装置后,怎么彻底的卸载??

假设原先的source还在的话,许多source的Makefile都有写uninstall规矩,直接在Souce里make uninstall就可行,不过碰到无良作者没写的,那一句一句看Makefile里install部分他都干了些什么,然后挨个删去。
假设source没了.....那就一边抑郁吧

到目前为止, 我装的都可以make uninstall.......
(由于总是不小心装错当地, 成果就make uninstall make clean,然后从头configure......)
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表AG环亚娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章