博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
autotools入门笔记(一)
阅读量:6832 次
发布时间:2019-06-26

本文共 1218 字,大约阅读时间需要 4 分钟。

GNU autotools作用:收集系统配置信息并自动生成Makefile文件。

GNU autotools主要包括三个工具:autoconf、automake、libtool,还有很多辅助的工具,包括:autoheader、aclocal、autoscan。

● autoscan检测源文件生成configure.scan;

● autoconf根据configure.in(或者configure.ac)生成configure;

● automake根据Makefile.am 生成Makefile.in。

这几个工具及中间生成的文件的关系图如图1所示:

 

图1

Ubuntu下安装:

sudo apt-get install autoconf

sudo apt-get install automake

 

下面以test工程为例,工程跟目录为test,只有一个源文件main.c。构建的主要步骤如下,其中最主要的步骤是(2)和(6):

(1)运行autoscan检测源文件生成configure.scan,将其修改成configure.in

(2)编辑configure.in

          a.修改AC_INIT(FULL-PACKAGE-NAME,VERSION, BUG-REPORT-ADDRESS),FULL-PACKAGE-NAME为程序名称,VERSION为当前版本,BUG-REPORT-ADDRESS为bug汇报地址。例如:AC_INIT(main,0.0.1, );

          b. 随后增加一行:AM_INIT_AUTOMAKE(test, 0.0.1);

          c. 在AC_OUTPUT前增加一行:AC_CONFIG_FILES([Makefile])

          (文件configure.in完整内容如图2所示)

图2

(3)运行aclocal生成aclocal.m4

(4)运行autoconf生成configure脚本

(5)运行autoheader生成config.h.in文件

(6)创建并编辑Makefile.am

       AUTOMAKE_OPTIONS=foreign

       #automake提供了三种软件等级:foreign、gnu和gnits,默认等级为gnu,(会检测NEWS、README、AUTHORS和ChangeLog文件)。

       #在本例使用foreign等级,它只检测必须的文件。

       bin_PROGRAMS=main

       #定义要产生的可执行文件名,如果要产生多个执行文件,每个文件名用空格隔开。

       main_SOURCES=main.c

       #指定用来生成目标的源文件列表

      (文件Makefile.am完整内容如图3所示)

图3

(7)运行automake --add-missing生成makefile.in

(8)运行configure脚本生成Makefile

至此,构建完毕,运行make命令可以完成编译过程生成可执行文件main。

 

你可能感兴趣的文章
什么是DevOps?
查看>>
基于Spring AOP实现可控的请求日志保存,自定义注解
查看>>
secureCRT,永久设置,保护眼睛,配色方案
查看>>
[note]wordpress上线准备
查看>>
TFT working sequence
查看>>
Inside Cisco IOS Software Architecture(第一章,系统基础知识)
查看>>
java.lang.UnsupportedClassVersionError: Bad version number in .class file
查看>>
理解 Neutorn LBaaS - 每天5分钟玩转 OpenStack(120)
查看>>
CentOS上面的MRTG快速配置
查看>>
SysUtils 中其他 PChar 函数: StrPas、StrNew、StrDispose、StrNextChar、StrFmt、StrLFmt、StrCharLength...
查看>>
用Java写算法之五:快速排序
查看>>
UK 更新惊魂记
查看>>
ZooKeeper-3.3.4集群安装配置
查看>>
《Spring In Action》第三版中文版 Chapter 1 Piece 3
查看>>
用图片拼接图片 C#
查看>>
python对多个数据库执行mysql的source命令
查看>>
我的友情链接
查看>>
JS 实现连续滚动的思路
查看>>
关于cvs merge的问题的研究
查看>>
解决chrome崩溃的问题
查看>>