首页 > 编程知识 正文

动态照片如何转成静态,升级automake版本

时间:2023-05-05 07:03:22 阅读:40606 作者:69

automake生成的Makefile可以自动编译和链接程序,还可以生成各种文档(如manual page和info文件),以及打包和发布源文件。 因此,存储程序源代码的目录结构优选符合GNU的标准规则。 例如,hello.c程序生成Makefile文件。

1 )在当前目录下创建一个名为hello的子目录。 名为hello的目录用于存储名为hello.c的程序和相关文件。 新建源文件hello.c

#包含

(intmain(intargc,char**argv ) ) ) ) ) ) ) )。

{

welcometouseautoconfandautomake (n );

返回0;

}

2、运行autoscan命令生成名为configure.scan的文件。

自动扫描

3,将configure.scan改名为configure.in :

mvconfigure.scanconfigure.in

4,打开configure.in,按如下方式修改此文件:

# processthisfilewithautoconftoproduceaconfigurescript。

AC_init(Hello.c ) )。

am_init_Automake(Hello,1.0 ) ) ) )。

#检查软件程序。

AC_PROG_CC

#Checksforlibraries。

#Checksforheaderfiles。

#Checksfortypedefs,structures,andcompilercharacteristics。

#Checksforlibraryfunctions。

是AC_output(makefile )

5、运行以下两个命令,分别生成aclocal.m4和configure文件:

宏基

autoconf

6 )创建四个名为NEWS、README、AUTHORS和ChangeLog的空白文件。

接触新闻

touch自述

touchAUTHORS

触摸变更日志

7,创建名为Makefile.am的文件,然后键入:

AUTOMAKE_OPTIONS=foreign

cxdwd_PROGRAMS=hello

hello_SOURCES=hello.c

8、执行命令“automake --add-missing”后,automake会从Makefile.am文件中生成包含最重要Makefile.in的文件

automake----添加-缺少

9、最后执行“./configure”命令生成makefile

./configure

10,生成makefile后,可以运行" make "命令编译hello.c程序,生成可执行程序hello。 生成可执行程序hello后执行。

化妆

./hello

welcometouseautoconfandautomake

让我们总结一下这个例子的流程。

(1)在包含源代码的目录中执行autoscan命令,生成configure.scan文件。

)2)将configure.scan文件重命名为configure.in并修改其默认配置。

)3)运行aclocal和autoconf两个命令,分别生成aclocal.m4和configure文件。

)4)创建名为Makefile.am的文件,然后输入相应的内容。

)5)运行automake --add-missing,从Makefile.am文件生成Makefile.in。

(6)运行./configure脚本文件,从Makefile.in文件生成最终的Makefile文件。

在以上步骤中,makefile是在源代码所在的目录下自动生成的。

configure.in文件

autoconf是用于生成“配置”文件的工具。 configure是一个shell脚本,它会自动设置一些编译参数,以便程序可以在不同的平台上进行编译。 autoconf读取配置. in文件并生成名为“配置”的shell脚本。

configure.in文件的内容是一系列GNU m4宏,这些宏在由autoconf处理后将成为检查系统特性的shell脚本。 configure.in文件中的宏顺序没有特别规定,但对于每个configure.in

文件必须以宏AC_INIT开头,以宏AC_OUTPUT结束。一般可先用autoscan这个工具扫描原始文件以产生一个configure.scan 文件,再对configure.scan 作些修改,从而生成 configure.in 文件

configure.in 文件中一些宏的含义如下。

l    #或dnl:#或dnl后面的内容作为注释不会被处理,它们是注释的起始标志。

l    AC_INIT(FILE):该宏用来说明源代码所在路径,如上例中的AC_INIT(hello.c),表明源代码在当前目录下,名为hello.c。

l    AM_INIT_AUTOMAKE(PACKAGE,VERSION):这个是后面运行automake命令所必需的宏,PACKAGE指明要产生软件的名称,VERSION 是其版本号。

l    AC_PROG_CC:检查系统可用的C编译器,若源代码是用C语言编写的就需要这个宏。

l         AC_OUTPUT(FILE):设置configure命令所要产生的文件。我们最终期望产生Makefile

这个文件,因此一般将其设置为AC_OUTPUT(Makefile)。

在运行automake命令时,还需要一些其他的宏,这些额外的宏由aclocal产生。执行aclocal会产生aclocal.m4文件,如果没有特别的要求,无需修改它。用 aclocal产生的宏将会提示automake如何动作。

另一个重要的文件是Makefile.am。automake根据configure.in中的宏并在perl的帮助下把Makefile.am转成Makefile.in文件。Makefile.am 文件定义所要产生的目标。

Makefile.am文件

Makefile.am文件中几个预定的选项的含义如下所示。

l    AUTOMAKE_OPTIONS:它用于设置automake的选项。automake 主要是帮助开发 GNU 软件的人员来维护软件,所以在执行automake 时,会检查目录下是否存在标准GNU软件中应具备的文件,例如“NEWS”、“AUTHOR”、“ChangeLog”等文件。设置为foreign 时,automake 会改用一般软件的标准来进行检查。

l    cxdwd_PROGRAMS:定义要产生的可执行程序的文件名。如果要产生多个可执行文件,每个文件名用空白符隔开。

l    hello_SOURCES:定义“hello”这个可执行程序所需要的原始文件。如果“hello”这个程序是由多个原始文件产生的,必须把它所用到的所有原始文件都列出来,并以空白符隔开。假设“hello”还需要“hello.c”、“main.c”、“hello.h”3个文件,则定义hello_SOURCES= hello.c main.c hello.h。如果定义多个可执行文件,则对每个可执行程序都要定义相应的filename_SOURCES,其中filename为要生成的可执行程序的文件名。

编辑好Makefile.am文件后,就可以使用命令automake --add-missing生成Makefile.in。加上--add-missing这个选项是用来提示automake加入包装一个软件所必需的文件,如果不使用该选项,automake可能会报告缺少了某些文件。automake产生出来的 Makefile.in文件是完全符合GNU Makefile规定的,只要执行 configure这个Shell脚本便可以产生合适的Makefile文件了。

如何使用产生的Makefile文件

执行configure脚本文件所产生的Makefile文件有几个预定的选项可供使用。

l    make all:产生设定的目标,即生成所有的可执行文件。使用make也可以达到此目的。

l    make clean:删除之前编译时生成的可执行文件及目标文件(形如*.o的中间文件)。

l    make distclean:除了删除可执行文件和目标文件以外,把configure所产生的 Makefile文件也清除掉。通常在发布软件前执行该命令。

l    make install:将使用make all或make命令产生的可执行文件以软件的形式安装到系统中。若使用cxdwd_PROGRAMS宏,程序将会被安装到 /usr/local/cxdwd下,否则安装到预定义的目录下。

l    make dist:将程序和相关的文档包装为一个压缩文档以供发布。执行完该命令,在当前目录下会产生一个名为PACKAGE-VERSION.tar.gz的文件。PACKAGE 和 VERSION 这两个参数是来自configure.in文件中的AM_INIT_AUTOMAKE(PACKAGE,

VERSION)。如在上个例子中执行make dist命令,会产生名为“hello-1.0.tar.gz”的文件。

l    make distcheck:与make dist类似,但是加入了检查包装以后的压缩文件是否正常。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。