configure.ac文件编写规则-概述说明以及解释
- 格式:doc
- 大小:16.12 KB
- 文档页数:11
config用法config是configuration的缩写,是指配置或设置的意思。
在计算机领域中,config通常用来指代某个软件、系统或设备的配置文件或设置选项。
配置文件是一种文本文件,包含了应用程序或系统的各种参数、选项和默认值,通过修改配置文件可以改变软件或系统的行为。
使用config可以对软件、系统或设备进行各种设置和配置,例如网络设置、安全设置、文件路径设置等。
通过修改config文件,可以定制化软件、系统或设备的行为和功能,以适应不同的用户需求。
config文件通常以文本形式存储,可以使用文本编辑器(如Notepad++、Sublime Text等)来打开和编辑。
在编辑config文件时,需要按照一定的规则和格式进行操作,否则可能会导致配置文件失效或出现错误。
一个常见的例子是配置网络设置。
在网络配置文件中,可以设置IP地址、子网掩码、默认网关、DNS服务器等信息。
通过修改config文件,可以将计算机连接到不同的网络环境中,实现网络的连接和通信。
另一个例子是配置安全设置。
在安全配置文件中,可以设置密码策略、防火墙规则、访问控制列表等设置。
通过修改config文件,可以提高系统的安全性,防止恶意攻击和未经授权的访问。
除了网络和安全设置,config还可以用来配置其他各种应用程序和设备。
例如,对于一个网站的配置文件,可以设置网站的名称、主题、语言、数据库连接等信息。
通过修改config文件,可以修改网站的外观和功能,以实现个性化定制。
总的来说,config的使用非常广泛,几乎所有的软件、系统和设备都需要进行配置和设置。
通过修改config文件,可以方便地实现对软件和系统的个性化定制,以满足用户的需求。
在使用config时,需要注意以下几点:1.备份config文件:在修改config文件之前,最好先备份原始的配置文件,以免操作失误导致配置文件损坏或数据丢失。
2.注意语法和格式:config文件使用特定的语法和格式,修改时需要按照规定的格式进行操作,否则可能会导致配置文件失效。
autoreconf 源码编译1. 什么是 autoreconf?autoreconf 是一个用于自动化生成 GNU Autotools 构建系统所需文件的工具。
GNU Autotools 是一套用于自动化构建和配置软件的工具集,包括 Autoconf、Automake 和 Libtool。
使用 autoreconf 可以简化软件的构建过程,减少手动配置的工作量。
2. autoreconf 的作用在编译源码之前,通常需要先进行一系列的配置操作,例如生成 Makefile、检查编译环境等。
而 autoreconf 的作用就是根据项目中的 configure.ac 文件自动生成这些配置文件和脚本,从而简化了整个配置过程。
具体来说,autoreconf 会读取 configure.ac 文件,并根据其中的宏定义和规则生成以下文件:•configure:一个脚本文件,用于检查系统环境和生成 Makefile。
•aclocal.m4:包含所有宏定义的文件。
•Makefile.in:包含 Makefile 的模板。
•config.h.in:包含预处理器常量和宏定义的模板。
•stamp-h.in:在第一次运行 configure 时创建,用于标记是否需要重新生成 config.h。
通过自动生成这些文件,autoreconf 大大简化了软件构建过程中繁琐的手动配置步骤。
3. autoreconf 的使用方法要使用 autoreconf,首先需要确保系统中已经安装了 GNU Autotools 工具集。
在大多数 Linux 发行版中,可以通过包管理器直接安装这些工具。
安装完成后,进入源码目录,在命令行中运行以下命令:autoreconf -i其中,-i参数表示自动运行autoheader、aclocal、automake和autoconf这些工具。
运行 autoreconf 之后,会在当前目录生成 configure 脚本和其他相关文件。
configure关于交叉编译的参数设置configure的参数众多,一般包括如下:--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--host=arm-linux这就是arm的交叉编译选项;configure--host=mipsel-linux这个就是mipsel的交叉编译选项。
gcc 编译configure语句摘要:一、GCC 编译器简介二、configure 语句的作用三、configure 语句的使用方法四、configure 语句的参数详解五、configure 语句在GCC 编译过程中的应用正文:GCC(GNU Compiler Collection)是一个广泛使用的编译器套件,支持多种编程语言,如C、C++、Java、Fortran 等。
GCC 通过configure 语句来配置编译器,以满足不同平台和用户的需求。
configure 语句是GCC 编译器中一个非常关键的部分,主要用于读取用户输入的配置选项,并根据这些选项来生成相应的编译器。
configure 语句可以识别各种选项,如编译器类型、优化级别、目标平台等,从而让用户能够针对特定需求定制编译器。
使用configure 语句的方法很简单。
首先,确保已经安装了GCC 编译器,然后在终端中进入GCC 的安装目录。
接下来,运行以下命令:```./configure [options]```其中,`[options]`是用户需要传递给configure 的参数。
这些参数可以包括编译器类型(如gcc 或g++)、优化级别(如-O2 或-O3)、目标平台(如x86_64-linux-gnu)等。
configure 语句的参数有很多,具体可以参考GCC 官方文档。
以下是一些常用的参数:- `--help`:显示configure 语句的帮助信息。
- `--version`:显示GCC 编译器的版本信息。
- `--host`:指定目标平台的类型。
- `--target`:指定生成编译器的目标平台。
- `--prefix`:指定编译器安装的目录。
- `--with-xxx`:指定需要使用的库或工具。
在执行configure 语句后,根据提示进行交互式操作,或者直接使用`make`命令来编译生成编译器。
最后,可以使用`make install`命令将编译器安装到指定的目录。
configure的用法Configure是一种常见的配置命令,它可以用于配置各种软件、应用程序以及系统设置等。
在使用configure命令之前,我们需要了解该命令的基本用法以及相关参数。
本文将围绕configure命令的用法,分步骤进行阐述。
第一步:下载源代码在使用configure命令之前,我们需要先下载源代码。
对于开源软件而言,一般都可以从官网或者源代码仓库进行下载。
在下载完源代码之后,我们需要将其解压缩到指定的目录中,这样才能进行后续的操作。
第二步:执行configure命令在解压缩源代码之后,我们需要进入到源代码的目录中,并执行configure命令。
该命令的基本用法如下所示:./configure [options]其中,options表示一些可选参数,这些参数可以影响configure命令的执行结果。
下面是一些常见的options及其含义:--prefix:指定安装路径,即安装后文件所在的目录。
--enable-xxx:启用某项功能,例如--enable-shared表示启用共享库。
--disable-xxx:禁用某项功能,例如--disable-debug表示禁用调试模式。
--with-xxx=:指定其他软件或库的安装路径,例如--with-zlib=/usr/local/zlib表示指定zlib库的安装路径。
--without-xxx:不使用某个软件或库,例如--without-sqlite 表示不使用sqlite数据库。
--help:显示帮助信息,例如./configure --help表示显示configure命令的帮助信息。
第三步:编译源代码在执行configure命令之后,我们需要进行编译。
通常情况下,我们可以使用make命令进行编译。
make命令会自动根据Makefile文件进行编译,生成可执行文件。
第四步:安装程序在编译完成之后,我们需要将生成的程序进行安装。
通常情况下,我们可以使用make install命令进行安装。
图解aclocal、autoconf、automake、autoheader、configure1.autoscan (autoconf): 扫描源代码以搜寻普通的可移植性问题,⽐如检查编译器,库,头⽂件等,⽣成⽂件configure.scan,它是configure.ac的⼀个雏形。
2.aclocal (automake):根据已经安装的宏,⽤户定义宏和acinclude.m4⽂件中的宏将configure.ac⽂件所需要的宏集中定义到⽂件 aclocal.m4中。
aclocal是⼀个perl 脚本程序,它的定义是:“aclocal - create aclocal.m4 by scanning configure.acuser input files optional input process output files================ ============== ======= ============acinclude.m4 - - - - -.V.-------,configure.ac ------------------------>|aclocal|{user macro files} ->| |------> aclocal.m4`-------'3.autoheader(autoconf): 根据configure.ac中的某些宏,⽐如cpp宏定义,运⾏m4,声称config.h.inuser input files optional input process output files================ ============== ======= ============aclocal.m4 - - - - - - - .|V.----------,configure.ac ----------------------->|autoheader|----> autoconfig.h.in`----------'4.automake: automake将Makefile.am中定义的结构建⽴Makefile.in,然后configure脚本将⽣成的Makefile.in⽂件转换为Makefile。
GNU AUTOTOOLS 简介1.介绍大部分时候,你从网上下载了一个开放源代码的软件,在解压后,你一般会敲入以下三个命令来编译和安装你的程序:1)./configure2)make3)make install其中,configure脚本分析你的系统以找到合适的工具和库,make是真正用来编译构建软件的工具,make install来安装软件。
在开放源代码世界,configure脚本获得了广泛的使用,它使从源代码安装软件变得非常容易,本文主要就是介绍如何使用GNU autotools,以便使你能够以上面这种方式来编译和安装你的程序。
2.什么是GNU autotoolsGNU autotools主要包括下面三个工具:Autoconf –这个工具用来生成configure脚本。
就像前面提到的,这个脚本主要用来分析你的系统以找到合适的工具和库。
譬如:你的系统的C编译器是―cc‖还是―gcc‖?Automake –这个工具用来生成Makefiles。
它需要使用到Autoconf提供的信息。
譬如,如果Autoconf检测到你的系统使用―gcc‖,那Makefile就使用gcc作为C编译器。
反之,如果找到―cc‖,那就使用―cc‖。
Libtools –这个工具创建共享库。
它是平台无关的。
3.为―Hello,world‖添加Autoconf1) 创建一个―Hello,world!‖写一个简单的―Hello,world!‖程序hello.c:#include <stdio.h>int main(void){printf ("Hello World.\n");}写一个简单的MakefileMakefileEXEC:=helloall: $(EXEC).PHONY:cleanclean:rm -f hello *.o2) 添加Autoconf现在,我们将添加autoconf到这个程序。
aclocal用法aclocal是一个GNU Autotools工具链中的一个重要工具,它用于生成configure脚本,并确保它们能够正确地检测到系统的库和头文件位置。
在本文中,我们将详细介绍aclocal的用法和一些常见的示例。
aclocal的基本用法非常简单,可以在命令行中直接运行aclocal命令。
它需要指定一个或多个.m4宏文件作为输入,并生成名为aclocal.m4的输出文件。
.m4文件通常包含一些宏定义,这些宏定义被configure脚本使用,以检测和配置系统的特性和库。
以下是一个基本的aclocal命令的例子:``````上述命令将从m4目录中读取.m4文件,并生成aclocal.m4文件。
-I选项用于指定额外的.m4文件路径,以便aclocal能够找到所需的宏文件。
如果不提供-I选项,aclocal将默认/usr/share/aclocal和/usr/local/share/aclocal目录。
在实际使用中,通常需要使用多个.m4文件,因此可以将它们放入同一个目录,并使用以下方式指定多个输入文件:``````- -I dir:指定额外的.m4文件路径。
- -I dir:通过逗号分隔的列表指定额外的.m4文件路径。
- -D macro=value:定义一个宏,并为其指定一个值。
- -I dir:使用自定义的.aclocal目录,指定同名目录中的.m4文件。
export ACLOCAL_FLAGS='--prefix=/usr/local/share/aclocal'这个例子中,我们使用export命令将ACLOCAL_FLAGS环境变量设置为自定义选项。
然后,当运行aclocal命令时,它会自动加载环境变量中的选项,以覆盖默认行为。
除了命令行选项,aclocal还支持在.m4文件中使用特殊的宏定义来控制其行为。
这些宏定义通常以AC_开头,以下是一些常用的宏定义示例:- AC_INIT:在configure.ac文件中使用此宏定义,指定软件包的名称和版本号。
关于GNU autotools的使用GNU Autotools指的就是下面的五个工具:(1)aclocal(2)autoscan(3)autoconf(4)autoheader(5)automakeAutotools的使用流程第一步:手工编写Makefile.am这个文件第二步:在源代码目录树的最高层运行autoscan。
然后手动修改configure.scan文件,并改名为configure.ac/ configure.in。
第三步:运行aclocal,它会根据configure.ac的内容生成aclocal.m4文件。
第四步:运行autoconf,它根据configure.ac和aclocal.m4的内容生成configure这个配置脚本文件。
第五步:运行automake --add-missing,它根据Makefile.am的内容生成Makefile.in。
第六步:运行configure,它会根据Makefile.in的内容生成Makefile这个文件。
AutoTools 傻瓜入门Makefile固然可以帮助make完成它的使命,但要承认的是,编写Makefile确实不是一件轻松的事,尤其对于一个较大的项目而言更是如此。
那么,有没有一种轻松的手段生成Makefile而同时又能让我们享受make 的优越性呢?本节要讲autotools系列工具正是为此而设的,它只需用户输入简单的目标文件、依赖文件、文件目录等就可以轻松地生成Makefile了,这无疑是广大用户的所希望的。
另外,这些工具还可以完成系统配置信息的收集,从而可以方便地处理各种移植性的问题。
也正是基于此,现在Linux上的软件开发一般都用autotools来制作Makefile。
学习GNU/LINUX开发的编程人员,上手之后不久就会在编译开源软件的时候碰到configure脚本,过段时间还会知道configure脚本是autoconf生成的;但是真正想用起来autoconf,却是要弄明白config.h,configure.in,Makfile.am等一大堆的文件,这可能要花些功夫。
编译安装.config参数解释说明(转)Linux操作系统的Configure参数解释说明Linux环境下的软件安装,并不是⼀件容易的事情;如果通过源代码编译后在安装,当然事情就更为复杂⼀些;现在安装各种软件的教程都⾮常普遍;但万变不离其中,对基础知识的扎实掌握,安装各种软件的问题就迎刃⽽解了。
Configure脚本配置⼯具就是基础之⼀,它是autoconf的⼯具的基本应⽤。
与⼀些技巧相⽐,Configure显得基础⼀些,当然使⽤和学习起来就显得枯燥乏味⼀些,当然要成为⾼⼿,对基础的熟悉不能超越哦。
为此我转载了⼀篇关于Configure选项配置的详细介绍。
供⼤家参考'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文件语法
configure文件是一种常用的配置文件,在Linux系统中被广泛使用。
它通常用于指定软件的编译和安装参数,以及一些其他的系统级配置。
configure文件的语法比较简单,它主要由一系列的命令和变量组成。
其中,命令通常以AC_或AM_开头,而变量则以一些特定的前缀来标识其类型。
在configure文件中,命令和变量的使用都是有一定规则的。
例如,命令通常需要在特定的环境中使用,而变量则需要进行赋值或引用。
此外,configure文件还可以包含一些条件语句和循环语句等控制结构,以方便对不同条件下的配置进行处理。
总的来说,configure文件的语法非常灵活,可以用于实现各种不同的配置需求。
对于Linux系统管理员和开发人员来说,熟练掌握configure文件的语法是非常重要的。
- 1 -。
学习autoconf和automakeautoconf和automake是啥?这要从类Unix系统的程序编译说起。
一般一个真正的工程肯定不只一个文件,而多个文件的编译是件很麻烦的事情(最简单的就是用gcc或者g 后面接着多个文件),再加上要推出跨平台的(一般只是跨不同的类Unix平台),还有啥包依赖啊什么的,很麻烦嗯。
于是就有了一个工具叫make,它接收一个名为Makefile的文件作为参数,自动地进行编译,还可以在Makefile里设置接受不同的选项,然后人们就可以make install、make all 什么的了。
然而不同系统的编译要用不同的编译参数,但是开源软件不可能带多个Makefile,而且又难写,囧么办?于是有了configure脚本,它自动检测系统,并接受一个Makefile.in文件,根据它来生成Makefile。
然而confiure脚本和Makefile.in还是很难写,至少我不会写,而且看得也眼花。
于是GNU推出了autoconf和automake,用于生成configure脚本和Makefile.in文件。
其中autoconf是用来生成configure的,automake是用来生成Makefile.in的。
貌似说了很多废话。
东西是拿来用的,不是拿来吹的,所以就拿来用吧。
首先看看autoconf怎么用。
autoconf接受一个configure.ac的文件,根据里面的内容来生成configure脚本。
怎么还有文件?嗯,总是要有输入的嘛,反正简单得多就是了(大型软件的configure.ac可能也挺复杂,不过总比自己写configure要来得轻松得多)。
现在一步一步来看看最简单的configure.ac里有些什么,首先是两句初始化命令:AC_INIT(src/main.cpp)AM_INIT_AUTOMAKE(main, 0.1)这两句是所有configure.ac里都必须有的,AC_INIT的参数是你main函数所在的文件(包括路径),AM_INIT_AUTOMAKE指定了程序的名称和版本号。
config的用法Config 的用法在计算机编程中,config 是一个常用的缩写词,代表配置(configuration)。
配置文件被广泛应用于各种软件和系统中,用于存储和管理程序的设置和选项。
在以下几个方面,我将介绍 config 的用法。
1. 配置文件的格式和语法配置文件通常采用简单的文本格式,其中包含一系列键值对(key-value pairs)。
每个键和其对应的值之间用等号或冒号分隔,并且通常每个键值对占据一行。
例如:```username = john_doepassword = p@ssw0rd```有些配置文件还支持注释行,通常以井号或分号开头,用于说明或解释某个配置项。
例如:```# 这是注释行,用于说明以下配置项的作用timeout = 30```2. 配置文件的位置和加载配置文件通常存储在程序的工作目录中,或者存储在特定的配置文件夹中。
程序会在启动时加载配置文件,并将其中的配置项读取到内存中供程序使用。
加载配置文件的具体方法和实现取决于编程语言和框架。
在 Python 中,可以使用configparser 或 YAML 等库来读取配置文件。
3. 配置项的使用配置项的使用可以根据具体的需求来定制。
程序可以根据配置项的值来决定不同的行为、设置各种选项或连接到不同的服务。
配置项的值可以是字符串、整数、布尔值等不同的数据类型,根据实际需要进行选择。
4. 动态修改配置有些程序在运行时允许用户或管理员动态修改配置项,以满足不同的需求。
这种情况下,程序需要提供相应的接口或工具给用户进行配置项的修改,并且及时生效。
动态修改配置要确保数据的有效性和安全性。
5. 安全性注意事项配置文件中可能包含敏感信息,如密码、密钥等。
为了保护这些信息的安全,应采取适当的安全措施,如加密存储、限制访问权限等。
另外,应该避免在配置文件中存储过多的敏感信息,尽量使用环境变量或其他安全的方式进行敏感信息的存储与读取。
我们得感谢David MacKenzie,要不是他富有远见地发明Autoconf工具,我们现在还得编写和维护冗长、复杂的configure脚本。
在Automake发明之前,Autoconf是单独被使用的。
有很多遗留下来的开源项目并没有完成转换成基于Autotool工具的形式。
所以如果你看到一个开源项目包含了一个名为configure.in和一个手工的Makefile.in文件,你不应该感到奇怪。
Autoconf工作方式---- configure脚本后面我们将会发现,花点时间去只单独使用Autoconf是大有裨益的。
通过这种方式(不使用Automake等其它Autotool工具)我们可以认清被Automake这些后来的工具所隐藏的Autoconf的操作原理。
Autoconf的输入是shell脚本,这可能会让你大跌眼镜!当然这个输入并不是纯shell脚本。
而是一个包含宏的shell脚本,加上一些宏定义文件。
这些宏定义文件一些来自Autoconf工具本身,一些是你或我(当然也有可能是其它人)编写的。
使用的宏语言叫做M4(名字有点搞笑,它其实表示了Macro,即M后面跟了四个字母,类似的词有i18n,表示internationalization,l10n表示localization)。
M4工具是一个通用宏语言处理器,由Brian Kernighan和Dennis Ritchie 在1977年编写的。
某些形式的M4宏语言处理器在几乎所有的Unix和Linux平台上都支持,这也是为什么Autoconf使用它的原因。
Autoconf设计目的就是要能在所有系统上都可以正常使用,而不需要附加的复杂的工具集。
Autoconf只依赖于很少的一些工具,包括m4,sed,在新的2.26版本上需要awk。
大多数Autotool(Autoconf除外)工具需要用到perl处理器。
注意,不要把Autotool的需求依赖和Autotool生成的脚本以及makefiles的需求依赖混淆在一起。
autotools 使⽤关于Autotools 的使⽤我们前⾯的章节中已经讲到了Makefile 的使⽤()。
我们知道在下⾯如果编译⼀个⽐较⼤型的项⽬,我们可以通过Makefile 的⽅式来完成。
但是,我们⼜蛋疼了,Makefile 拥有复杂的语法结构,甚⾄让⼈难以领会,当我们项⽬⾮常⼤的时候,维护Makefile 会成为⼀件⾮常头疼的事情。
于是我们就有了autotools ⼯具,专门⽤来⽣成Makefile ,这个⼯具让我们很⼤程度的降低了开发的难度。
Autotools 并不是⼀个⼯具,⽽是⼀系列⼯具:1. autoscan2. aclocal3. autoconf4. autoheader5. automake记住,这⼀系列⼯具看着复杂,最终的⽬标还是⽣成Makefile⼀般情况下系统中都会默认安装这⼀系列⼯具,如果未安装,则在Centeros 中可以通过下⾯命令安装:c 源⽂件同⼀⽬录下Autotools 的使⽤如果你的源⽂件都放在同⼀个⽬录下⾯,那么使⽤Autotools 的时候会相对简单很多。
⽐较著名的开源软件Memcache 也是放在同⼀⽬录下的,你可以去看下它的源码包。
下⾯会按照步骤来实现同⼀⽬录下的Autotools ⼯具的使⽤。
1. 源代码例⼦⼊⼝⽂件main.csum.h 和sum.cval.h 和val.cget.h 和get.c上⾯这个例⼦,我们在中已经讲解过如何来⼿⼯编写Makefile 编译。
这边的话我们继续使⽤这个例⼦,实现Autotools 的⼯具编译。
[plain]01. sudo yum install automake[cpp]01.#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include "sum.h" #include "get.h" //⼊⼝主函数 int int int int , z); 02. , z); 03. return }[cpp]01. #include <stdio.h> #include <stdlib.h> #include <unistd.h> intintint *y);[cpp]01. #include "sum.h" #include "val.h" intintint return }[cpp]01. #include <stdio.h> #include <stdlib.h> #include <unistd.h> intint *x);[cpp]01. #include "val.h" intint return }[cpp]01. #include <stdio.h> #include <stdlib.h> #include <unistd.h> intintint *y);[cpp]01. #include "get.h" intintint return }2. Autoscan 命令第⼀步,我们需要在我们的项⽬⽬录下执⾏autoscan 命令。
Linux下使⽤automake、autoconf⽣成configure⽂件⼀、⽣成configure过程中各⽂件之间的关系图⼆、详细介绍autoscan: 扫描源代码以搜寻普通的可移植性问题,⽐如检查编译器,库,头⽂件等,⽣成⽂件configure.scan,它是configure.ac的⼀个雏形。
aclocal:根据已经安装的宏,⽤户定义宏和acinclude.m4⽂件中的宏将configure.ac⽂件所需要的宏集中定义到⽂件 aclocal.m4中。
aclocal是⼀个perl 脚本程序,它的定义是:“aclocal - create aclocal.m4 by scanning configure.ac”automake:将Makefile.am中定义的结构建⽴Makefile.in,然后configure脚本将⽣成的Makefile.in⽂件转换为Makefile。
如果在configure.ac中定义了⼀些特殊的宏,⽐如AC_PROG_LIBTOOL,它会调⽤libtoolize,否则它会⾃⼰产⽣config.guess和config.subautoconf:将configure.ac中的宏展开,⽣成configure脚本。
这个过程可能要⽤到aclocal.m4中定义的宏。
三、实例1.测试代码(定义两个⽂件hello.h和hello.c)/*hello.c*/#include <iostream>#include "hello.h"using namespace std;int main(){CHello a;return0;}/*hello.h*/#ifndef __HELLO_H__#define __HELLO_H__#include<iostream>using namespace std;class CHello{public:CHello(){ cout<<"Hello!"<<endl;}~CHello(){ cout<<"Bye!"<<endl;}};#endif2.操作步骤(1)安装依赖的包[root@bogon autoconfig]# yum -y install automake autoconfautomake包括:aclocal、automake等autoconf包括:autoscan、autoconf等(2)autoscan[root@bogon autoconfig]# ll-rw-r--r-- 1 root root 105 Jun 4 hello.cpp-rw-r--r-- 1 root root 189 Jun 4 hello.h[root@bogon autoconfig]# autoscan[root@bogon autoconfig]# lltotal 12-rw-r--r-- 1 root root 0 Jun 4 autoscan.log-rw-r--r-- 1 root root 481 Jun 4 configure.scan-rw-r--r-- 1 root root 105 Jun 4 hello.cpp-rw-r--r-- 1 root root 189 Jun 4 hello.h(3)aclocal[root@bogon autoconfig]# mv configure.scan configure.ac[root@bogon autoconfig]# vim configure.ac /*将下⾯红⾊加粗的部分修改掉*/# -*- Autoconf -*-# Process this file with autoconf to produce a configure script.AC_PREREQ([2.69])AC_INIT(hello, 1.0, admin@)AM_INIT_AUTOMAKE(hello, 1.0)AC_CONFIG_SRCDIR([hello.cpp])AC_CONFIG_HEADERS([config.h])# Checks for programs.AC_PROG_CXXAC_PROG_CC# Checks for libraries.# Checks for header files.# Checks for typedefs, structures, and compiler characteristics.# Checks for library functions.AC_OUTPUT(Makefile)[root@bogon autoconfig]# aclocal[root@bogon autoconfig]# lltotal 52-rw-r--r-- 1 root root 37794 Jun 4 aclocal.m4drwxr-xr-x 2 root root 51 Jun 4 autom4te.cache-rw-r--r-- 1 root root 0 Jun 4 autoscan.log-rw-r--r-- 1 root root 492 Jun 4 configure.ac-rw-r--r-- 1 root root 105 Jun 4 hello.cpp-rw-r--r-- 1 root root 189 Jun 4 hello.h下⾯给出本⽂件的简要说明(所有以”#”号开始的⾏为注释):· AC_PREREQ 宏声明本⽂件要求的autoconf版本,本例使⽤的版本为2.59。
锐捷无线AC配置手册21.1理解Web认证21.1.1Web认证概述Web认证是一种基于端口对用户访问网络的权限进行控制的认证方法,这种认证方式不需要用户安装专用的客户端认证软件,使用普通的浏览器软件就可以进行接入认证。
未认证用户上网时,接入设备强制用户登录到特定站点,用户可以免费访问其中的服务。
当用户需要使用互联网中的其它信息时,必须在Web认证服务器进行认证,只有认证通过后才可以使用互联网资源。
如果用户试图通过HTTP 访问其他外网,将被强制访问Web认证网站,从而开始Web认证过程,这种方式称作强制认证。
Web认证可以为用户提供方便的管理功能,门户网站可以开展广告、社区服务、个性化的业务等。
21.1.2Web认证基本概念Web认证的基本概念主要有HTTP拦截、HTTP重定向。
21.1.2.1HTTP拦截HTTP拦截指接入设备将原本需要转发的HTTP报文拦截下来,不进行转发。
这些HTTP报文是连接在接入设备的端口下的用户所发出的,但目的并不是接入设备本身。
例如,某用户通过IE浏览器上网,接入设备本应该将这些HTTP请求报文转发到网关的,但如果启动HTTP拦截,这些报文可以不被转发。
HTTP拦截之后,接入设备需要将用户的HTTP连接请求转向自己,于是接入设备和用户之间将建立起连接会话。
接入设备将利用HTTP 重定向功能,将重定向页面推送给用户,用户的浏览器上将弹出一个页面,这个页面可以是认证页面,也可以是下载软件的链接等等。
在Web认证功能中,连接在哪些物理端口下、哪些用户所发出的到哪个目的端口的HTTP报文需要进行拦截,哪些不需要,都是可以设置的。
一般地,未经过认证的用户发出的HTTP请求报文会被拦截,已通过认证的用户将不被拦截。
HTTP拦截是Web认证功能的基础,一旦发生了拦截,就会自动触发Web认证的过程。
21.1.2.2HTTP重定向根据HTTP协议规定,正常情况下,用户的浏览器发出HTTP GET 或HEAD请求报文后,如果接收一方能够提供资源,则以200报文响应,如果本地不能提供资源,则可以使用302报文响应。
configure.ac文件编写规则-概述说明以及解释1.引言1.1 概述概述部分的内容可以简要介绍configure.ac文件以及其在软件开发中的作用。
下面是一个示例:概述configure.ac文件是在GNU Autotools软件开发工具中使用的一个重要文件。
它用于自动化软件的配置过程,主要是为了确保软件在不同的操作系统和不同的环境下能够正确地编译和安装。
在软件开发过程中,开发人员经常会遇到不同的操作系统和环境的差异,这些差异包括编译器、库文件以及系统路径等等。
如果没有一个统一的配置系统来处理这些差异,软件的编译和安装过程将变得非常困难,并且可能导致不一致的结果。
configure.ac文件就是为了解决这个问题而设计的。
它包含了一系列的配置指令,开发人员可以使用这些指令来定义软件在不同环境中的配置选项。
在软件发布时,用户只需要运行configure脚本,它会根据configure.ac文件中的配置指令生成一个可执行的Makefile,用于编译和安装软件。
configure.ac文件的编写是一个具有一定规则的过程。
开发人员需要了解一些基本的规则和语法,以确保configure脚本的生成和使用的正确性。
本文将介绍configure.ac文件的基本规则,并探讨其在软件开发中的重要性。
在下一节中,我们将详细介绍configure.ac文件的作用,以及它在软件开发中的具体应用。
1.2文章结构1.2 文章结构文章的结构是指整篇文章的组织和框架,它决定了文章内容的连贯性和逻辑性。
正确的文章结构能够让读者更好地理解和消化文章中的信息。
在撰写configure.ac文件编写规则这篇长文时,合理的文章结构将帮助读者快速了解configure.ac文件的编写规则,并能够有序地领略configure.ac文件的作用和应用的重要性。
通常,对于这种类型的文章,适合采用以下的文章结构:引言部分:引言部分是文章的开篇,用来引出文章的主题。
在该部分,我们将概述configure.ac文件编写规则的重要性、文章的目的以及整篇文章的结构,并展示configure.ac文件所在的背景和作用。
正文部分:正文部分是整篇文章的核心,用来展开具体的内容。
在该部分,我们将介绍configure.ac文件的作用、基本规则和编写要点。
首先,我们会详细介绍configure.ac文件对软件项目的重要性,并展示它在项目中的具体作用;接着,我们将深入说明configure.ac文件的基本规则,包括文件的命名规范、内容的结构组织和语法的要求等。
通过合理的编写规则,我们能够确保configure.ac文件的正常运行,有效地实现项目的配置和安装。
结论部分:结论部分是整篇文章的总结和归纳。
在该部分,我们将简要回顾configure.ac文件的编写规则,强调其重要性和实际应用的意义。
同时,我们还将探讨configure.ac文件的应用对软件项目开发的影响,以及如何充分利用configure.ac文件来提高项目的可维护性和可扩展性。
通过上述的文章结构,读者可以清晰地理解configure.ac文件的编写规则,并能够更好地应用和运用这些规则来提高项目的配置和安装的效率。
1.3 目的写作本文的目的是为了介绍和解释configure.ac文件的编写规则。
configure.ac文件是一个重要的文件,它被用于自动化构建系统,特别是在开源软件项目中。
通过理解和遵守configure.ac文件的规则,开发人员可以更好地管理项目的配置和构建过程,提高代码可移植性和可维护性。
本文的目的是帮助读者了解configure.ac文件的作用和基本规则,使他们能够正确地编写和使用configure.ac文件。
通过阐述configure.ac 文件的规则和最佳实践,本文旨在提供一个清晰的指南,帮助读者避免常见的错误和陷阱。
另外,本文还旨在强调configure.ac文件的重要性和应用价值。
正确编写和使用configure.ac文件可以简化项目的配置和构建过程,提高开发效率和项目质量。
通过合理配置configure.ac文件,开发人员可以灵活地控制项目的特性和依赖关系,从而更好地满足用户需求和平台要求。
总之,本文的目的是为读者提供关于configure.ac文件的全面指导,使他们能够准确、高效地编写和使用configure.ac文件,从而改进项目的配置和构建过程,提高开发效率和软件质量。
2.正文2.1 configure.ac文件的作用configure.ac文件是一个重要的配置文件,它被用于自动化软件项目的构建过程。
它包含了一系列的命令和指令,用于检测各种系统特性和资源,并生成一个可执行的configure脚本,该脚本可以根据当前系统的环境和需求,自动配置、编译和安装软件。
configure.ac文件的作用主要体现在以下几个方面:1. 系统环境检测和参数配置:通过configure.ac文件,可以实现自动检测各种系统环境和参数,并根据检测结果进行相应的配置。
例如,可以检测编译器、操作系统、库文件等,然后根据检测结果设定对应的编译选项、库路径等。
这样可以确保软件在不同的系统上都能够正确地编译和运行。
2. 依赖库和工具的检查:在configure.ac文件中,可以通过各种宏和函数来检查所需的依赖库和工具是否存在,以及其版本是否符合要求。
如果缺少某些依赖库或工具,configure脚本可以给出相应的错误提示或警告,以便开发者及时解决依赖关系。
3. 生成Makefile和其他构建脚本:configure.ac文件不仅可以配置编译选项,还可以根据需求生成相应的Makefile或其他构建脚本。
Makefile是用于自动化编译过程的重要脚本,它定义了编译、链接、安装等操作的规则和依赖关系。
通过configure.ac文件生成的Makefile能够根据具体的系统环境和需求,自动生成适应性强的编译规则。
这样,开发者在编译时只需要执行生成的Makefile,就能够自动完成编译和安装过程。
4. 支持用户自定义配置和扩展:configure.ac文件为用户提供了自定义配置和扩展的接口。
开发者可以在configure.ac文件中设定一些可选的功能或特性,然后通过启用或禁用相应的选项来实现自定义配置。
这样,用户可以根据自己的需求和偏好,选择性地启用或禁用某些功能,使软件更加符合自己的使用环境和特定要求。
总而言之,configure.ac文件扮演着软件项目构建过程中不可或缺的角色。
它通过自动检测、配置和生成构建脚本,为开发者提供了一种方便、灵活和可扩展的方式来构建、配置和安装软件。
正是借助于configure.ac 文件,我们能够更加高效地进行软件开发和部署,减少了手动配置和编译的繁琐过程,提高了开发效率和软件的可移植性。
因此,掌握configure.ac 文件的编写规则对于软件开发人员来说是非常重要的。
2.2 configure.ac文件的基本规则configure.ac文件是一个用于配置和生成Makefile的脚本文件,它是Autoconf工具的核心组成部分。
在编写configure.ac文件时,需要遵守一些基本规则,以确保生成的Makefile符合预期并能够正确地配置和构建软件项目。
以下是configure.ac文件的基本规则:1. 文件命名:通常,configure.ac文件的命名应该与项目的名称相同,并以configure.ac作为文件扩展名。
例如,项目名称为"myproject",则对应的configure.ac文件名为configure.ac。
2. 文件头部信息:configure.ac文件的头部应包含必要的注释和说明,通常包括项目的名称、版本号、作者、项目的简介和许可证信息等。
这些信息可以用注释形式(以开头)添加到文件头部,以便他人阅读和理解项目的基本情况。
3. 宏定义:在configure.ac文件中,可以使用宏定义来简化和组织脚本的编写。
宏定义可以用来定义一些常用的配置选项、路径、依赖库等,以便在后续的配置和编译过程中使用。
可以使用AC_DEFUN宏来定义自定义宏。
4. AC_INIT宏:AC_INIT宏用于指定项目的名称、版本号和bug报告地址等信息。
它通常是configure.ac文件中的第一个宏,用于初始化Autoconf工具链,并为后续的配置过程提供必要的信息。
5. AC_CONFIG_FILES宏:AC_CONFIG_FILES宏用于指定生成的Makefile文件,以及其它需要生成的配置文件。
通常,Makefile的生成规则是通过指定Makefile.in文件和配置项的替换来实现的。
此外,如果项目还需要生成其它配置文件,如config.h等,也可以在这里进行配置。
6. AC_OUTPUT宏:AC_OUTPUT宏用于生成最终的configure脚本,并指定需要输出的文件。
在这个宏中可以使用configure.ac文件中定义的变量和宏进行配置,以生成最终的配置脚本。
以上只是configure.ac文件的基本规则,实际应用中可能还会涉及到更多的宏和配置选项,具体的配置内容和规则取决于项目的需求和复杂度。
编写configure.ac文件时,应尽可能保持清晰和可维护性,注释必要的信息,提供必要的提示和错误检查,以便将来的开发人员能够理解和维护该文件。
同时,也可以参考Autoconf的相关文档和示例来了解更多的配置选项和高级用法。
3.结论3.1 总结configure.ac文件编写规则在本文中,我们详细讨论了configure.ac文件编写规则,并总结如下:1. 遵循标准格式:configure.ac文件应该按照一定的标准格式进行编写,包括正确的缩进、注释和代码分隔等。
这有助于提高代码的可读性和可维护性。
2. 定义必要的宏:configure.ac文件中应该定义必要的宏,以便确保正确的自动配置和编译过程。
这些宏可以用于检测编译器、库和特定的系统或平台特性。
3. 设置默认值:为了增加配置的灵活性,configure.ac文件中应该设置合理的默认值。
这些默认值可以在用户不指定相关选项时使用,以保证代码在各种环境中正常运行。
4. 支持用户自定义选项:configure.ac文件应该提供一些用户可以自定义的选项,例如目标安装路径、开启或禁用某些功能等。
这些选项可以通过命令行参数或配置文件进行设置。
5. 处理依赖关系:configure.ac文件应该正确处理项目的依赖关系。
这包括检测所需的库和工具是否存在,并将它们正确地链接到项目中。
总之,编写configure.ac文件需要遵循一定的规则和标准,以确保项目能够正确地进行自动配置和编译。