基于linux的configure配置详解

嵌入式操作系统

57人已加入

描述

  一、linux简介

  Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

  二、linux主要特性

  基本思想

  Linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近。

  完全免费

  Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大。

  完全兼容POSIX1.0标准

  这使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时,就想到以前在Windows下常见的程序是否能正常运行,这一点就消除了他们的疑虑。

  多用户、多任务

  Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行。

  良好的界面

  Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。

  支持多种平台

  Linux可以运行在多种硬件平台上,如具有x86、680x0、SPARC、Alpha等处理器的平台。此外Linux还是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上。2001年1月份发布的Linux 2.4版内核已经能够完全支持Intel 64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。

  三、Linux系统优势六大方面

  Linux系统优势一:跨平台的硬件支持

  由于Linux 的内核大部分是用C 语言编写的,并采用了可移植的Unix标准应用程序接口,所以它支持如i386、Alpha、AMD和Sparc等系统平台,以及从个人电脑到大型主机,甚至包括嵌入式系统在内的各种硬件设备。

  Linux系统优势二:丰富的软件支持

  与其他的操作系统不同的是,安装了Linux系统后,用户常用的一些办公软件、图形处理工具、多媒体播放软件和网络工具等都已无需安装。而对于程序开发人员来说,Linux更是一个很好的操作平台,在Linux 的软件包中,包含了多种程序语言与开发工具,如gcc、cc、C++、Tcl/Tk、Perl、Fortran77 等。

  Linux系统优势三:多用户多任务

  和Unix系统一样,Linux系统是一个真正的多用户多任务的操作系统。多个用户可以各自拥有和使用系统资源,即每个用户对自己的资源(例如:文件、设备)有特定的权限,互不影响,同时多个用户可以在同一时间以网络联机的方式使用计算机系统。多任务是现代计算机的最主要的一个特点,由于Linux系统调度每一个进程是平等地访问处理器的,所以它能同时执行多个程序,而且各个程序的运行是互相独立的。

  Linux系统优势四:可靠的安全性

  Linux系统是一个具有先天病毒免疫能力的操作系统,很少受到病毒攻击。

  对于一个开放式系统而言,在方便用户的同时,很可能存在安全隐患。不过,利用Linux自带防火墙、入侵检测和安全认证等工具,及时修补系统的漏洞,就能大大提高Linux系统的安全性,让黑客们无机可乘。

  Linux系统优势五:良好的稳定性

  Linux 内核的源代码是以标准规范的32 位(在64 位CPU上是64 位)的计算机来做的最佳化设计,可确保其系统的稳定性。正因为Linux 的稳定,才使得一些安装 Linux 的主机像Unix 机一样常年不关而不曾宕机。

  Linux系统优势六:完善的网络功能

  Linux 内置了很丰富的免费网络服务器软件、数据库和网页的开发工具,如Apache、Sendmail、VSFtp、SSH、MySQL、PHP和JSP 等。近年来,越来越多的企业看到了Linux 的这些强大的功能,利用Linux 担任全方位的网络服务器。

  Linux 在它的追捧者眼里是一个近乎完美的操作系统,它具有运行稳定、功能强大、获取方便等优点,因而有着广阔的前景,或许也值得我们每一个计算机爱好者学习和应用。


  四、基于linux的configure配置详解

  Linux环境下的软件安装,并不是一件容易的事情;如果通过源代码编译后在安装,当然事情就更为复杂一些;现在安装各种软件的教程都非常普遍;但万变不 离其中,对基础知识的扎实掌握,安装各种软件的问题就迎刃而解了。Configure脚本配置工具就是基础之一,它是autoconf的工具的基本应用。

  ‘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

  用于配置的参数(configure)

  configure 里可用的参数集可以通过键入下面命令获得

  $ 。/configure --help

  下面的参数可能会引起安装者的兴趣:

  Directories to install PostgreSQL in(安装 postgreSQL 的目录):

  --prefix=PREFIX install architecture-independent files in PREFIX(把体系无关的文件装在 PREFIX)

  [/usr/local/pgsql]

  --bindir=DIR user executables in DIR (用户的可执行文件装在 DIR )[EPREFIX/bin]

  --libdir=DIR object code libraries in DIR (目标代码库在 DIR )[EPREFIX/lib]

  --includedir=DIR C header files in DIR (C 头文件放在 DIR)[PREFIX/include]

  --mandir=DIR man documentation in DIR (手册文档在 DIR )[PREFIX/man]

  Features and packages(特性和包):

  --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)(不包含 FEATURE (等效于 --enable-FEATURE=no))

  --enable-FEATURE[=ARG] include FEATURE (包含 FEATURE )[ARG=yes]

  --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)(不使用 PACKAGE (等效于 --with-PACKAGE=no))

  --enable and --with options recognized(可识别的附加选项):

  --with-template=template

  use operating system template file(使用操作系统模板文件)

  see template directory(参阅模板目录)

  --with-includes=dirs look for header files for tcl/tk, etc in DIRS(tk/tcl等的头文件在 DIR)

  --with-libraries=dirs look for additional libraries in DIRS(在DIR里查找附加库)

  --with-libs=dirs alternate spelling of --with-libraries(--with-libraries 的可选写法)

  --enable-locale enable locale support(打开本地化支持)

  --enable-recode enable cyrillic recode support(打开西里尔字母(斯拉夫语言字母)记录的支持)

  --enable-multibyte enable multibyte character support(打开多字节支持)

  --with-pgport=portnum change default postmaster port(更改缺省的启动端口)

  --with-maxbackends=n set default maximum number of server processes (设置缺省的最大服务器进程数)

  --with-tcl build Tcl interfaces and pgtclsh(制作 Tcl 接口和 pgtclsh)

  --with-tclconfig=tcldir

  tclConfig.sh and tkConfig.sh are in DIR(tclConfig.sh 和 tkConfig.sh 在 DIR)

  --with-perl build Perl interface and plperl(制作 Perl 接口和plperl)

  --with-odbc build ODBC driver package(制作 ODBC 驱动包)

  --with-odbcinst=odbcdir

  change default directory for odbcinst.ini(为 odbcinst.ini 改变缺省路径)

  --enable-cassert enable assertion checks (for debugging)(打开断言检查 (调试))

  --enable-debug build with debugging symbols (-g) (带调试符号(-g)制作)

  --with-CC=compiler

  use specific C compiler(使用声明的 C 编译器)

  --with-CXX=compiler

  use specific C++ compiler(使用声明的 C++ 编译器)

  --without-CXX prevent building C++ code (禁止制作 C++ 代码)

  有些系统在制作 Postgres 的一些特性时有问题.例如,有些系统的 C++ 编译器坏了,可能就需要声明 --without-CXX 告诉制作过程忽略 libpq++ 的制作.

  如果你想用安装在非相同标准查找路径里的头文件或库制作 Postgres ,请使用 --with-includes 和 --with-libraries 选项.例如,你可能用这些制作一个实验版本的 Tcl.如果你需要为头文件或库声明超过一个的非标准目录,这样做:

  --with-includes=“/opt/tcl/include /opt/perl5/include”

Linux
Linux
Linux

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分