autotools使用简介
autoreconf 源码编译
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 脚本和其他相关文件。
autotools 学习笔记
autotools 学习笔记1. 样例hello.c#include <stdio.h>main(){printf("hello world!\n");}Makefile.ambin_PROGRAMS=hellohello_SOURCES=hello.cconfigure.inAC_INIT()AM_INIT_AUTOMAKE(hello,1.0)AC_PROG_CCAC_PROG_INSTALLAC_OUTPUT(Makefile)2. 解释需要手动写的文件为Makefile.am和configure.in。
Makefile.am的语言是逻辑性语言,没有详细的执行表述。
仅仅表述了一个关系,通过该关系,执行可以推论出来。
而configer.in的语言是程序性的。
configure.in的每一行都是被执行的命令。
2.1 在configure.in中的命令●AC_INIT初始化configure脚本。
必须用源文件中的一个文件名作为参数。
如何源文件都可以。
●AM_INIT_AUTOMAKE进一步初始化,初始化过程与我们正在使用的automake有关。
如果你手动的写Makef.in 文件,则不需要调用该命令。
用逗号分隔的参数一个是包名,一个是版本号。
●AC_PROG_CC检查哪一个C编译器。
●AC_PROG_INSTALL 检查你的系统是否有一个BSD兼容的安装工具包。
如果没有它使用“install-sh”,如果“install-sh”在你的包的目录根中不存在,automake将安装它。
●AC_OUTPUT讲述配置文件从Makefile.in中产生Makefile2.2 附加的因素⏹如果编译一个库,你的配置文件必须决定如何处理“ranlib”,为此添加AC_PROG_RANLIB命令。
⏹如果你想递归调用在子目录中的makefile文件,配置脚本需要被告知如何去做这个。
你需要添加AC_PROG_MAKE_SET命令。
c语言build的用法
C语言build的用法1. 什么是Build在软件开发中,Build(构建)是指将源代码转换为可执行文件或库的过程。
在C语言中,Build通常包括了编译、链接和打包等步骤。
2. 编译过程编译是将源代码转换为机器可执行的中间代码或目标代码的过程。
C语言的编译过程通常分为预处理、编译和汇编三个阶段。
2.1 预处理(Preprocessing)预处理阶段通过预处理器对源文件进行处理,主要完成以下任务:•头文件包含:将#include指令替换为对应头文件的内容。
•宏替换:将宏定义替换为实际的表达式。
•条件编译:根据条件判断指令(如#ifdef、#ifndef)决定是否编译某段代码。
•去除注释:删除注释内容。
预处理后生成一个没有宏定义和条件编译指令,并且已经包含了所有头文件内容的源文件。
2.2 编译(Compiling)编译阶段将预处理后的源文件翻译成汇编语言或机器码。
这个阶段主要完成以下任务:•词法分析:将源代码分解成一个个单独的词法单元。
•语法分析:根据语法规则构建语法树。
•语义分析:检查代码是否符合语言规范,如类型匹配、变量声明等。
•中间代码生成:将源代码转换为中间代码,如LLVM IR(Intermediate Representation)。
2.3 汇编(Assembling)汇编阶段将汇编语言翻译成机器码。
这个阶段主要完成以下任务:•符号解析:将汇编指令中的符号(如函数名、变量名)与其对应的存储地址关联起来。
•生成可重定位目标文件:将汇编指令翻译成机器码,并生成可重定位目标文件(Object File)。
可重定位目标文件包含了机器码和相关的符号信息。
3. 链接过程链接是将多个目标文件和库文件合并成一个可执行文件或库的过程。
C语言的链接过程通常分为静态链接和动态链接两种方式。
3.1 静态链接(Static Linking)静态链接是在Build过程中将所有依赖的目标文件和库文件合并到最终的可执行文件或库中。
AutoTools快速开发
AutoTools快速开发
宋国伟
【期刊名称】《开放系统世界》
【年(卷),期】2004(000)004
【摘要】程序开发需要注意的细节很多,不仅需要用户有良好的技术,而且还需要开发利器帮助用户化难为易。
在此介绍AutoTools工具在程序开发中的几个应用,帮助用户了解它是如何在程序开发中发挥作用,有什么便利之处。
【总页数】1页(P73)
【作者】宋国伟
【作者单位】无
【正文语种】中文
【中图分类】TP311.52
【相关文献】
1.Autotools改进数据库应用部署 [J], 刘媛媛
2.使用易语言快速开发IP修改工具 [J], 冯立彬
3.基于云技术的轻量化共享快速开发平台的设计与研究 [J], 王冠群;滕海波
4.基于模型驱动架构的软件快速开发技术研究 [J], 郑文斌;池晓金;蔡怡挺;高旭初;王晓东;何佩
5.‘早金酥’等特色梨新品种快速开发推广的有效途径 [J], 范业宏;李俊才;沙守峰因版权原因,仅展示原文概要,查看原文内容请购买。
Autotools使用指南
Autotools使用指南Autotools使用指南一、功能&简介:Linux环境下,我们编译程序啥的都是一般用的GCC&&GDB等等工具,直接使用GCC命令进行编译操作。
这种方式一般是适用于程序文件比较少,组织结构比较简单的情况。
但是,当我们程序文件比较的多的时候,或者是程序文件组织结构比较的复杂(例如在程序文件夹中存在文件夹多层嵌套以及复杂引用等),此时我们如果是直接使用GCC一点一点的编译工作量会非常的大,而且万一程序修改了,还要重新的再工作一遍。
为此,我们有了make工具,依靠Makefile辅助文件,我们可以方便的进行工程的管理,以及编译操作。
当程序很复杂的时候,依靠我们去手工的建立、维护Makefile文件是非常的不现实的,不仅很复杂,而且费时费力,还容易出错。
为此,就有了我们的_Autotools_工具,只要输入工程中的目标文件、依赖文件、文件目录等信息就可以自动生成Makefile。
二、Autotools工具包:Autotools工具包的目标就是去方便的帮助我们得到我们需要的Makefile文件。
___Autotools使用流程:___<1>目录树的最高层运行autoscan,生成configure.scan文件;<2>运行aclocal,生成aclocal.m4文件;<3>运行autoconf,生成configure配置脚本;<4>运行autoheader,生成config.h.in文件;<5>手工编写Makefile.am文件;<6>运行automake,生成Makefile.in;<7>运行配置脚本configure,生成Makefile。
三、c源文件同一目录下Autotools的使用:如果你的源文件都放在同一个目录下面。
可以按照以下步骤来实现同一目录下的Autotools工具的使用:1、编写源代码:2、运行autoscan:第一步:我们需要在我们的<项目目录>下执行autoscan命令。
autotools用法简介
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用法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文件中使用此宏定义,指定软件包的名称和版本号。
如何自动使用
/***如何自动使用autotool工具自动生成makefile**总结:郭勇军*1)首先生成工程目录及其源码文件目录,并在相应的目录中放置文件**2)运行autoscan, 生成configure.scan文件, 将其改名为configure.ac,*并修改第5行的AC_INT中定义的软件名称和版本号,作者联系方式等等,*在configure.scan里面加入 AM_INIT_AUTOMAKE宏, 自动生成*Makefile.in,*要生成项目工程目录和其它目录下的Makefile文件, 必需加入*AM_CONFIG_FILES的宏:*例如: AC_CONFIG_FILES([Makefile*src/Makefile* data/Makefile* docs/Makefile* sound/Makefile])*3)项目工程目录下的Makefile.am文件*该目录下面保存的是与autotools相关的文件, 仅注明目录文件即可.*SUBDIRS = src doc data ....*4)其它目录的Makefile.am*例如: src/Makefile.am*bin_PROGRAMS = mj* mu_SOURCES = bot.h \*bot.cpp \*main.cpp \*...*data/Makefile.am*mjdatadir = $(pkgdatadir)/data*mjdata_DATA = mj.ini titles.txt*EXTRA_DIST = $(mjdata_DATA)**images/Makefile.am*imagesdir = $(pkgdatadir)/images*images_DATA = bgame.jpg \* mjgirl1a.jpg \* ...* mjgirl4c.jpg*EXTRA_DIST = $(images_DATA)** 5)准备好configure.ac和Makefile.am后就可以准备编写下面的脚本(因为每*次修改了configure.ac和Makefile.am后都要分别重新执行脚本中的代码), 用*脚本执行方便.*#autogen.sh*#! /bin/sh*set-x*aclocal//它根据 configure.ac 的定义,将需要使用的 m4 宏定义复制到*aclocal.m4 里面*autoheader//它负责生成 config.h.in 文件*automake --foreign --add-missing --copy //automake 提供了三种软件等级://foreign、gnu 和 gnits,让用户选择采用,默认等级为 gnu。
system-config命令用于配置系统的编译选项
system-config命令用于配置系统的编译选项在Linux系统中,system-config命令通常不用于配置系统的编译选项。
system-config是一系列工具的前缀,用于提供与系统配置相关的不同功能。
例如,system-config-network用于配置网络设置,system-config-firewall用于配置防火墙规则等。
如果你需要配置系统的编译选项,你可能需要使用其他工具,具体取决于你使用的编译器和构建工具。
以下是一些常见的用于配置编译选项的工具:
1.GNU Autotools:如果你使用GNU Autotools
(Autoconf、Automake、Libtool),你可以使用configure脚本进行配置。
一般的步骤是运行./configure,它将检查系统和依赖项,并生成一个Makefile,然后你可以使用make命令来构建软件。
2.CMake:CMake是一个跨平台的构建系统,通过
CMakeLists.txt文件配置。
你可以运行cmake命令,该命令将根据
CMakeLists.txt文件生成构建系统的文件,然后使用生成的构建系统进
行编译。
3.Meson:Meson是一个构建系统,类似于CMake。
你可以
创建一个meson.build文件,然后运行meson和ninja来配置和构建项目。
具体使用哪种工具取决于你的项目和个人偏好。
每个工具都有其独特的语法和用法,你需要查看相应的文档以了解如何配置编译选项。
Autotools改进数据库应用部署
Autotools改进数据库应用部署刘媛媛【期刊名称】《气象科技》【年(卷),期】2011(39)4【摘要】目前气象部门业务软件共享需求普遍,但实际共享水平不高.为了简化Unix/Linux操作系统数据库应用部署工作、方便用户共享使用,尝试使用开源软件普遍使用的Autotools(开源编译系统)工具改进数据库应用的部署.Autotools不仅能够降低开发具有可移植性程序的难度,而且能简化以源程序发布软件的编译工作.从开发者角度着重介绍了Autotools中Auotconf、Automake两个工具的使用方法,并描述了使用Autotools改进数据库项目部署的详细方法.使用Autotools有利于进一步完善、更广泛地推广数据库应用,其他类似气象行业软件也可以使用Autotools发布软件包进行共享或推广.%The GNU build system, also known as Autotools, is a suite of programming tools designed to assist in making source-code packages portable to many Unix-like systems, which can not only reduce the difficulty in developing transplantable software, but also simplify software compilation. The deployment and improvement of the database-related software by using Autotools are described. Two tools of Autotools, Auotconf and Automake, are discussed emphatically from the viewpoint of the developer, and the detailed application method is introduced. Autotools can further improve and popularize the application of databases, and can be used in other meteorological-related software for releasing and sharing software packages on the Linux/Unix platform.【总页数】5页(P489-493)【作者】刘媛媛【作者单位】国家气象信息中心资料服务室,北京100081【正文语种】中文【相关文献】1.基于TCGA数据库不平衡数据的改进分类方法 [J], 侯维岩; 刘超; 宋杨; 孙燚2.改进的无后端数据库的RFID认证协议 [J], 常志鹏3.大型数据库中利用强化学习改进treap的关联规则挖掘算法 [J], 辛春花;郭艳光;鲁晓波4.SQL数据库构建及其安全维护改进策略 [J], 周竞鸿5.BMC公司推出改进应用程序可用性和性能的DB2数据库缓冲池自动调整技术——Pool Advisor for DB2及新系统性能包可降低拥有数据库管理的总体成本 [J],因版权原因,仅展示原文概要,查看原文内容请购买。
autotools
关于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等一大堆的文件,这可能要花些功夫。
Autotools系列工具安装
Autotools系列工具安装过程一、VMware Workstation 环境下文件共享;(1)菜单栏“VM”,选择“Settings”,如下图所示:(2)在出现的对话框中单击“options”,然后单击“shared Folders”,在右侧的侧边栏中选择“Always enabled”,然后单击“add”,出现如下对话框,单击“Next”即可;再单击“Browse…”,选择本地磁盘下需共享的目录;通过共享目录的设置,可在VMware环境下访问本地磁盘,将共享文件夹中的文件拷贝(使用cp命令复制即可)到虚拟环境下的Linux 系统中。
二、autotools系列工具安装,autotools系列工具主要包含了aclocal、autoscan、autoconf、autoheader和automake工具,主要是利用这些工具的脚本文件来生成最后的Makefile文件。
这里主要介绍三种格式的软件包安装方式:.tar.gz、tar和tar.bz2 1、对于tar.gz(tgz)包以tar.gz为扩展名的软件包,是用Tar程序打包并用Gzip程序压缩的软件包。
要安装这种软件包,需要先对软件包进行解压缩,使用“tar -zxfv filename.tar.gz”可以对软件包进行解压缩,解压缩所得的文件在以filename为名的目录中。
进入该目录,可以看到解压缩出来的文件了。
具体步骤如下:(1)先解压tar.gz包,执行tar –zxvf filename.tar.gz命令解压;(2)运行cd命令,进入filename目录下;(3)再依次执行:./configure;./make;./make install;(4)这样就完成以tar.gz为扩展名的软件包;2、对于tar包,安装过程如下:(1)执行tar -xvf filename.tar命令解压。
(2)运行cd命令,进入filename目录下;(3)再依次执行:./configure;./make;./make install;(4)这样就完成tar包的安装;3、对于tar.bz2包以tar.bz2 为扩展名的软件包,是用tar程序打包并用bzip2程序进行压缩的软件包。
linux常用编译指令
linux常用编译指令Linux是一种开源的操作系统,以其稳定性和安全性而闻名。
在Linux中,编译是一项常见的任务。
编译是将源代码转换为可执行文件的过程,使得我们可以运行和使用软件。
在本文中,我们将介绍一些常用的Linux编译指令,帮助您更好地理解和使用Linux系统。
1. gccgcc是GNU编译器套装(GNU Compiler Collection)的缩写,是Linux系统中最常用的编译器之一。
它支持多种编程语言,如C、C++和Objective-C等。
使用gcc指令可以将源代码编译成可执行文件,例如:```gcc -o hello hello.c```这个指令将hello.c文件编译成一个名为hello的可执行文件。
2. g++g++是gcc的一个版本,专门用于编译C++程序。
与gcc类似,g++可以将C++源代码编译成可执行文件。
例如:```g++ -o hello hello.cpp```这个指令将hello.cpp文件编译成一个名为hello的可执行文件。
3. makemake是一种自动化编译工具,可以根据Makefile文件中的规则来编译源代码。
Makefile是一个包含编译规则的文本文件,其中指定了源文件、目标文件和编译选项等信息。
使用make指令可以根据Makefile文件来编译项目,例如:```make```这个指令将在当前目录中查找Makefile文件,并根据其中的规则来编译源代码。
4. cmakecmake是一个跨平台的编译工具,可以帮助我们生成Makefile文件。
与make相比,cmake更加灵活和方便,可以自动生成适用于不同操作系统和编译器的Makefile文件。
使用cmake指令可以生成Makefile文件,例如:```cmake .```这个指令将在当前目录中生成一个适用于当前系统的Makefile文件。
5. autotoolsautotools是一个用于自动化编译的工具集合,包括autoconf、automake和libtool等工具。
autotool工具的使用方式(简单的例子)
autotool⼯具的使⽤⽅式(简单的例⼦)autotool⼯具的使⽤⽅式(简单的例⼦)autotool是⼀种帮助⽤户⾃动管理项⽬⽣成Makefile的⼯具。
有时候⼿动写Makefile可以满⾜⾃⼰的要求,但是随着项⽬增加,代码结构也变得⾮常复杂,这样⼀来⼿动维护每个Makefile就变得⾮常困难。
autotool的存在帮助降低了项⽬维护的难度。
autotool不是某⼀个⼯具,⽽是⼀系列⼯具的混合体。
autoscanaclocalautoconfautoheaderautomake这⼀系列最终⽬的就是⽣成makefile,进⽽帮助项⽬编译。
Makefile.am的作⽤Makefile.am⽂件是整个autotool⾃动⽣成makefile的灵魂,这其中不需要规定多么复杂的逻辑⽣成关系。
这⾥对这个内容进⾏着重介绍。
终极⽬标automake通过Makefile.am来⽣成Makefile.in。
bin_PROGRAMS(*program-list*) a program or programs build in the local directory that should be compiled, linked and installed.noinst_PROGRAMS(*program-list*) a program or programs build in the local directory that should be compiled, linked but not installed.bin_SCRIPTS(*script-list*) a script or scripts build in the local directory that should be installed.man_MANS(*page-list*)man pages that should be installed.lib_LTLIBRARIES(*lib-list*) a library or libraries that should be built using libtool.命名⽅案automake使⽤统⼀的命名规则,此举可以使⼯具明确需要构建的内容。
编译利器之大型项目如何使用Automake和Autoconf完成编译配置
大型项目使用Automake/Autoconf完成编译配置使用过开源C/C++项目的同学们都知道,标准的编译过程已经变成了简单的三部曲:configure/make/make install, 使用起来很方便,不像平时自己写代码,要手写一堆复杂的Makefile,而且换个编译环境,Makefile还需要修改(Eclipse也是这样)。
这么好的东东当然要拿来用了,但GNU的Autotool系列博大精深,工具数量又多,涉及的语言也多,要是自己从头看到尾,黄花菜都凉了,项目估计早就结束了;上网搜样例倒是有一大堆,但都是“hello world”的样例,离真正完成大型项目的目标还差得远。
没有办法,对照网上的样例,再找几个开源的源码,然后参考各种Autotools的手册,花了2天时间,终于完成了一个基本可用的Autotools。
为了避免其他XDJM也浪费时间,因此将过程总结下来,就算是新年礼物,送给大家!!提纲挈领:使用Autotools其实很简单大家不要看到那么多工具,其实使用起来很简单,总结起来就是两部分:1)按照顺序调用各个工具;2)修改或者添加3个文件;整个操作顺序如下图:听到我这么讲,大家是否觉得有信心了?好的,下面我们来看具体如何操作:1.源码根目录调用autoscan脚本,生成configure.scan文件,然后将此文件重命名为configure.ac(或configure.in,早期使用.in后缀)2.修改【configure.ac】,利用autoconf提供的各种M4宏,配置项目需要的各种自动化探测项目3.编写【自定义宏】,建议每个宏一个单独的*.m4文件;4.调用acloca l收集configure.ac中用到的各种非Autoconf的宏,包括自定义宏;5.调用autoheader,扫描configure.ac(configure.in)、acconfig.h(如果存在),生成config.h.in宏定义文件,里面主要是根据configure.ac中某些特定宏(如AC_DEFINE)生成的#define和#undefine宏,configure在将根据实际的探测结果决定这些宏是否定义(具体见后面例子)。
autotools上手手册
Autotools 上手指南1——autoconf 基本思想 dccmx 于 2011年 一月 7日 发表 | 最后修改于 2011年 一月 10日 要想弄懂Autotools 并使用它,必须先要了解一下M4这个怪物。
那么何为M4呢,M4的名称取自Macro (M 后面跟4个字母…)。
它和C 预处理器里的宏是一个概念(其实,M4和C 预处理器都K&R 操刀设计的!!),用来处理文本替换。
也就是说,M4是bash 里的预处理器。
取自维基的例子:1 2 3 4 5 6 7 8 9 10 11 12 13 divert(-1) This `divert' discards this text. Note that I had to quote the `divert' in the comment so it wouldn't get undiverted. This starts the count at ONE as the incr is a preincrement. define(`H2_COUNT', 0) The define H2_COUNT is redefined every time the H2 macro is used. The dnl deletes everything on the line after it in the output (ie this bit) define(`H2', `define(`H2_COUNT', incr(H2_COUNT))'dnl `<h2>H2_COUNT. $1</h2>') divert(0)dnl diversion to 0 means back to normal dnl removes this line. H2(First Section) H2(Second Section) H2(Conclusion)这段M4宏用m4处理输出的结果就是:1 2 3 <h2>1. First Section</h2><h2>2. Second Section</h2><h2>3. Conclusion</h2>简单说下:1.M4的语法跟C 里面宏的语法差不多,都很像函数,名字加括号。
autotools使用
使用autotools建立Makefile 对于一个较大的项目而言,完全手动建立Makefile是一件费力而又容易出错的工作。
autotools系列工具只需用户输入简单的目标文件、依赖文件、文件目录等就可以比较轻松地生成Makefile了。
现在Linux上的软件开发一般都是用autotools来制作Makefile。
autotools工具主要有:aclocal、autoscan、autoconf、autoheader、automake。
使用autotools 主要就是利用各个工具的脚本文件来生成最后的Makefile。
下面结合实例来介绍具体的流程。
第一步autoscan使用autoscan在给定目录及其子目录树中检查源文件,如果没有给出目录,就在当前目录及其子目录树中进行检查。
最终生成两个文件:configure.scan、autoscan.log[armlinux@lqm autotools-easy]$ tree.|-- main.c|-- mytool1.c|-- mytool1.h|-- mytool2.c`-- mytool2.h0 directories, 5 files执行命令:# autoscan[armlinux@lqm autotools-easy]$ tree.|-- autoscan.log|-- configure.scan|-- main.c|-- mytool1.c|-- mytool1.h|-- mytool2.c`-- mytool2.h0 directories, 7 files其中,configure.scan是configure.in的原型文件。
而configure.in是autoconf的脚本配置文件。
所以下一步的工作就是要对configure.scan进行修改,将其转化为configure.in。
第二步autoconfconfigure.scan文件内容如下:# -*- Autoconf -*-# Process this file with autoconf to produce a configure script.AC_PREREQ(2.57)AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)AC_CONFIG_SRCDIR([main.c])AC_CONFIG_HEADER([config.h])# Checks for programs.AC_PROG_CC# Checks for libraries.# Checks for header files.# Checks for typedefs, structures, and compiler characteristics.# Checks for library functions.AC_OUTPUT说明:1、以“#”号开始的是行为注释。
autotools入门
# -*- Autoconf -*# Process this file with autoconf to produce a configure script. > AC_PREREQ (version),要求autoconf的版本 AC_PREREQ(2.59) > AC_INIT (package, version, [bug-report], [tarname], [url]) AC_INIT(jobqueue, 1.0, zhiyong1@) > AC_CONFIG_AUX_DIR (dir),指定辅助文件的目录 > ls config > config.guess config.sub depcomp install-sh missing > 这些文件是autoconf生成的,要随源码发布 AC_CONFIG_AUX_DIR(config) > AC_CONFIG_HEADERS (header) > 生成的配置头文件的名称 AC_CONFIG_HEADER([config.h]) > AC_CONFIG_SRCDIR (unique-file-in-source-dir) > ./configure --srcdir=DIR 指定源码目录,configure 查找 unique-file-in-source-dir, 确定指定了正确的源码目录 AC_CONFIG_SRCDIR([jobqueue.cpp])
检查c编译器acprogcxx检查c编译器acprogcc检查链接器acprogld检查ranlib程序acprogranlib检查install程序acproginstallaccheckliblibraryfunctionactioniffoundactionifnotfoundotherlibraries指定libcurl中的一个函数curleasyinit检查是否有libcurl库如果没有指定actioniffound且找到了libcurl库则默认添加lcurl到libs如果没有指定actionifnotfound且没有找到libcurl库则默认不退出configure如果需要改变默认行为用下面检查mysqlclient的方法checksforlibraries
AutoCAD工具箱_AutoTOOLS简介
AutoCAD工具箱—AutoT OOLS简介邓卓智(北京市水利规划设计研究院)摘要 AutoT OOLS是结合水利水电行业,开发出的一套内容丰富、速度快、出图质量高的绘图软件工具。
它主要由Auto TOOLS中英文对照菜单、图案填充、专用字库(形文件)、文字输入及编排、图层线型的管理及有关工具、图面标注、钢筋图及钢筋表、土建结构图、图库管理系统、钢制管件CAD、纵断面图、橡胶坝袋横断面图和地形图绘制辅助程序等部件组成。
该软件还在不断完善之中。
关键词 AutoCAD工具箱 AutoT OOLS AutoCAD是目前国际上最有影响力和应用最广泛的绘图软件之一。
现在各设计单位的设计人员逐渐甩开图板,计算机出图率大幅度增大。
而对我们设计院这样的水利水电设计行业,不象建筑行业那样,有一套专用的CAD 设计软件包,大部分设计人员还是依赖于Au-to CAD硬画。
但实际绘图时,如果没有一套专用的软件,仅依靠AutoCAD的命令和函数,在速度上和出图质量上往往达不到要求,尤其是图中的中文标注和文字编排,常常耗费大量的时间,且难以得到满意的效果。
能不能使绘图成为一种轻松的劳动,并使图纸达到出版的水平呢?回答是肯定的。
我们几个计算机绘图受好者,自发地组织起来,结合工程的设计实践,由广大设计人员出题目,开发了大量的AutoLISP和ADS程序,汇集成AutoCAD工具箱——Auto-TOOLS。
其内容十分丰富,它主要由Auto TOOLS 中英文对照菜单、图案填充、专用字库(形文件)、文字输入及编排、图层线型的管理及有关工具、图面标注、钢筋图及钢筋表、土建结构图、图库管理系统、钢制管件CAD、纵断面图、橡胶坝袋横断面图和地形图绘制辅助程序等部分组成。
1 文字要在所画的图形中加上汉字时,系统应有矢量汉字图形库文件,再利用AutoCAD的命令和适当的方式调用汉字图形库,就实现在图形上加上汉字的功能。
我们看到有的设计院出的图,当中西文混写为一个字串时,西文字体大于中文字体,很不美观。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
autotools的使用2010-04-07 15:05:39| 分类:软件开发| 标签:autotools|字号大中小订阅在较大项目中, 如果手动维护Makefile, 那将是一件复杂并痛苦的事情. 那么, 有没有一种轻松的手段生成Makefile呢? autotools系列工具正是在这样的呼声中诞生的. 它只需用户输入简单的目标文件, 依赖文件, 文件目录等就可以轻松地生成Makefile了. 另外, 这些工具还可以完成系统配置信息的收集, 从而可以方便地处理各种移植性问题.autotools是系列工具, 它包含有:∙aclocal∙autoscan∙autoconf∙autoheader∙automakeautotools使用流程:下面用一个简单的hello.c程序, 演示autotools的使用流程. hello.c如下:wangsheng@pc01:~/work/train/make/automake$ lshello.cwangsheng@pc01:~/work/train/make/automake$ cat hello.c#include <stdio.h>int main(){printf("Hello, autotools!\n");return 0;}(1) 使用autoscan命令自动生成configure.scan文件它会在给定目录及其子目录树中检查源文件, 若没有给出目录, 就在当前目录及其子目录树中进行检查.它会搜索源文件以寻找一般的移植性问题并创建一个文件"configure.scan", 该文件就是接下来autoconf要用到的"configure.in"原型.wangsheng@pc01:~/work/train/make/automake$ autoscanwangsheng@pc01:~/work/train/make/automake$ lsautoscan.log configure.scan hello.c(2)将configure.scan重命名为configure.in, 并做适当修改configure.scan的内容:wangsheng@pc01:~/work/train/make/automake$ cat configure.scan# -*- Autoconf -*-# Process this file with autoconf to produce a configure script.AC_PREREQ([2.65])AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])AC_CONFIG_SRCDIR([hello.c])AC_CONFIG_HEADERS([config.h])# Checks for programs.AC_PROG_CC# Checks for libraries.# Checks for header files.# Checks for typedefs, structures, and compiler characteristics.# Checks for library functions.AC_OUTPUT将configure.scan重命名为configure.inwangsheng@pc01:~/work/train/make/automake$ mv configure.scan configure.in根据具体情况, 适当修改, 以下加粗部分是修改的内容:wangsheng@pc01:~/work/train/make/automake$ cat configure.in# -*- Autoconf -*-# Process this file with autoconf to produce a configure script.AC_PREREQ([2.65])#AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS]) AC_INIT(hello,1.0)AM_INIT_AUTOMAKE(hello,1.0)AC_CONFIG_SRCDIR([hello.c])AC_CONFIG_HEADERS([config.h])# Checks for programs.AC_PROG_CC# Checks for libraries.# Checks for header files.# Checks for typedefs, structures, and compiler characteristics.# Checks for library functions.AC_CONFIG_FILES([Makefile])AC_OUTPUT下面对这个脚本进行解释:∙以"#"号开始的行为注释∙AC_PREREQ宏声明本文要求的autoconf版本, 如本例中的版本2.65∙AC_INIT宏用来定义软件的名称和版本等信息, 在本例中省略了BUG-REPROT-ADDRESS, 一般为作者的E-mail∙AM_INIT_AUTOMAKE是手动添加的, 它是automake所必备的宏, 也同前面一样, PACKAGE是所要产生软件套件的名称,VERSION是版本编号.∙AC_CONFIG_SCRDIR宏用来侦测所指定的源码文件是否存在, 来确定源码目录的有效性. 在此处指当前目录下hello.c∙AC_CONFIG_FILES宏用于生成相应的Makefile文件.(3) 运行aclocal命令,生成"aclocal.m4"文件, 该文件主要处理本地的宏定义wangsheng@pc01:~/work/train/make/automake$ aclocalwangsheng@pc01:~/work/train/make/automake$ lsaclocal.m4 autom4te.cache autoscan.log configure.in hello.c(4) 运行autoconf命令生成configure可执行文件wangsheng@pc01:~/work/train/make/automake$ autoconfwangsheng@pc01:~/work/train/make/automake$ lsaclocal.m4 autom4te.cache autoscan.log configure configure.in hello.c(5) 运行autoheader命令, 生成config.h.in文件.该工具通常会从"acconfig.h"文件中复制用户附加的符号定义. 本例中没有附加的符号定义, 所以不需要创建"acconfig.h"文件.wangsheng@pc01:~/work/train/make/automake$ autoheaderwangsheng@pc01:~/work/train/make/automake$ lsaclocal.m4 autom4te.cache autoscan.log config.h.in configure configure.in hello.c(6) 运行automake命令, 生成Makefile.in文件这一步是创建Makefile很重要的一步, automake要用的脚本配置文件是Makefile.am, 用户需要自己创建相应的文件. 之后, automake工具将自动转换成Makefile.in 本例中, 创建的文件为Makefile.am, 内容如下:wangsheng@pc01:~/work/train/make/automake$ cat Makefile.amAUTOMAKE_OPTIONS=foreignbin_PROGRAMS=hellohello_SOURCES=hello.c说明:∙其中的AUTOMAKE_OPTIONS为设置automake的选项. 由于GNU对自己发布的软件有严格的规范, 比如必须附带许可证声明文件COPYING等, 否则automake执行时会报错. automake提供了3中软件等级:foreign, gnu和gnits, 供用户选择. 默认级别是gnu. 在本例中, 使用了foreign 等级, 它只检测必须的文件.∙bin_PROGRAMS定义要产生的执行文件名. 如果要产生多个执行文件, 每个文件名用空格隔开∙hello_SOURCES定义"hello"这个可执行程序所需的原始文件. 如果"hello"这个程序是由多个源文件所产生的, 则必须把它所用到的所有源文件都列出来, 并用空格隔开. 如果要定义多个可执行程序, 那么需要对每个可执行程序建立对应的file_SOURCES.在这里使用"--add-missing"选项可以让automake自动添加一些必须的脚本文件.wangsheng@pc01:~/work/train/make/automake$ automake --add-missingconfigure.in:7: installing `./install-sh'configure.in:7: installing `./missing'Makefile.am: installing `./depcomp'wangsheng@pc01:~/work/train/make/automake$ lsaclocal.m4 autoscan.log configure depcomp install-sh Makefile.inautom4te.cache config.h.in configure.in hello.c Makefile.am missing(7)运行configure, 生成Makfefile文件wangsheng@pc01:~/work/train/make/automake$ ./configurechecking for a BSD-compatible install... /usr/bin/install -cchecking whether build environment is sane... yeschecking for a thread-safe mkdir -p... /bin/mkdir -pchecking for gawk... gawkchecking whether make sets $(MAKE)... yeschecking for gcc... gccchecking whether the C compiler works... yeschecking for C compiler default output file name... a.outchecking for suffix of executables...checking whether we are cross compiling... nochecking for suffix of object files... ochecking whether we are using the GNU C compiler... yeschecking whether gcc accepts -g... yeschecking for gcc option to accept ISO C89... none neededchecking for style of include used by make... GNUchecking dependency style of gcc... gcc3configure: creating ./config.statusconfig.status: creating Makefileconfig.status: creating config.hconfig.status: executing depfiles commandswangsheng@pc01:~/work/train/make/automake$ lsaclocal.m4 config.hconfig.statusdepcomp Makefile missingautom4te.cache config.h.in configure hello.c Makefile.am stamp-h1autoscan.log config.log configure.in install-sh Makefile.in可以看到, 在运行configure时收集了系统的信息, 用户可以在configure命令中对其进行自定义配置. ./configure的自定义参数有两种:∙开关式--enable-XXX或者--disable-XXX∙开放式-with-XXX=yyyautotools生成Makefile流程图如下:测试用autotools生成的Makefileautotools生成的Makefile具有以下主要功能:(1) make编译源程序, 键入make, 默认执行"make all"命令wangsheng@pc01:~/work/train/make/automake$ makemake all-ammake[1]: Entering directory `/home/wangsheng/work/train/make/automake'gcc -DHAVE_CONFIG_H -I. -g -O2 -MT hello.o -MD -MP -MF .deps/hello.Tpo -c -o hello.ohello.c mv -f .deps/hello.Tpo .deps/hello.Pogcc -g -O2 -o hello hello.omake[1]: Leaving directory `/home/wangsheng/work/train/make/automake'此时在本目录下就生成了可执行文件"hello", 运行"./hello"就能看到程序的执行结果:wangsheng@pc01:~/work/train/make/automake$ ./helloHello, autotools!(2) make install执行该命令, 可以把程序安装到系统目录中wangsheng@pc01:~/work/train/make/automake$ sudo make install此时, 直接在console输入hello, 就可以看到程序的运行结果(3) make clean清除之前所编译的可执行文件及目标文件wangsheng@pc01:~/work/train/make/automake$ make cleantest -z "hello" || rm -f hellorm -f *.o(4) make dist将程序和相关的文档打包为一个压缩文档以供发布wangsheng@pc01:~/work/train/make/automake$ make dist wangsheng@pc01:~/work/train/make/automake$ ls-l hello-1.0.tar.gz hello-1.0.tar.gz可见该命令生成了一个hello-1.0.tar.gz的压缩文档./。