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, test@test.com);

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。

转载于:https://www.cnblogs.com/snake-hand/p/3149531.html

autotools入门笔记(一)相关推荐

  1. autotools入门笔记(二)——创建和使用静态库、动态库

    带有静态库或者动态库的工程的构建过程与上一节()只包含一个源文件的工程的构建过程是类似的.只是对于复杂的工程,如果包含多个还有源文件的目录时,需要对每个包含源文件的目录执行构建过程,另外创建和使用库文 ...

  2. vue router 入门笔记

    vue router 入门笔记 tips: components优先级大于component,即当一个route对象里同时配置了component和components时component视为无效 即 ...

  3. 十年公务员转行IT,自学AI三年,他淬炼出746页机器学习入门笔记

    整理 | Jane 编辑 | Just 出品 | AI科技大本营(ID:rgznai100) 近期,梁劲传来该笔记重大更新的消息.<机器学习--从入门到放弃>这本笔记的更新没有停止,在基于 ...

  4. html缩进快捷键_HTML 入门笔记

    HTML 入门笔记 HTML (HyperText Markup Language) 不是一门编程语言,而是一种用来告知浏览器如何组织页面的标记语言. HTML 可复杂.可简单,一切取决于开发者. 它 ...

  5. Python3入门笔记(1) —— windows安装与运行

    Python3入门笔记(1) -- windows安装与运行 Python的设计哲学是"优雅"."明确"."简单".这也是我喜欢Python ...

  6. [Java入门笔记] 面向对象编程基础(二):方法详解

    2019独角兽企业重金招聘Python工程师标准>>> 什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能 ...

  7. React.js入门笔记

    # React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的 ...

  8. python3入门与进阶笔记_我的Python3萌新入门笔记

    Python3萌新入门笔记是一系列真实的自学笔记. 当然,它也是比较全面的入门教程,共包括54篇笔记. 从第一篇笔记开始,大半年的时间我都是在自学和组织教程内容. 我觉得有必要,把我自己的学习过程和大 ...

  9. MySql入门笔记二~悲催的用户

    这些是当年小弟的MySql学习笔记,木有多么复杂的结构操作,木有多炫丽的语句开发,木有...总之就是木有什么技术含量... 日复一日,彪悍的人生伴随着彪悍的健忘,运维操作为王,好记性不如烂笔头,山水有 ...

最新文章

  1. 实时把你的脸变成名画,手机摄像头新玩法
  2. 2.4 嵌入矩阵-深度学习第五课《序列模型》-Stanford吴恩达教授
  3. DayDayUp之Job:牛客网—算法工程师—剑指offer之66道在线编程(解决思路及其代码)——1~20
  4. Paper:《How far are we from solving the 2D 3D Face Alignment problem? 》解读与翻译
  5. 泛函分析——赋范线性空间定义的概念
  6. zenmap 的扫描方式
  7. 你初吻啥时候没有的​?​
  8. [Spring5]IOC容器_底层原理
  9. Java:放心(或非常容易)
  10. 将大型项目从Ant迁移到Maven
  11. 系统卡 服务器cpu 内存不足,电脑很卡 系统提示内存不足的解决办法
  12. 拓端tecdat|R语言绘制ggplot2双色XY-面积图组合交叉折线图可视化
  13. sphinx的使用1-创建索引
  14. Git报错remote: error: hook declined to update refs/heads/feature/XXX
  15. 2021年AR/VR创企融资39亿美元创纪录 元宇宙成为推手
  16. python分析微博数据中心_数据分析如何驱动社交媒体营运
  17. Aras innovator: TOC目录简单汉化方法
  18. 对图片或者PDF流文件加水印
  19. js-页面需展示大量图片时,采用lyz.delayLoading.min.js,图片在屏幕时加载显示
  20. 《大明王朝》掠之于官

热门文章

  1. python 清除字符串中的 emoji 表情
  2. LeetCode 1765. 地图中的最高点(BFS)
  3. LeetCode 214. 最短回文串(字符串哈希)
  4. LeetCode 1469. 寻找所有的独生节点
  5. LeetCode 1161. 最大层内元素和(层序遍历)
  6. axure选中后横线切换_Axure8.0|动态面板内容简单切换技巧
  7. 代写python代码一般多少钱_代写CO 353课程作业、代做Python程序设计作业、代写Python语言作业...
  8. python中遇到循环import即circular import的问题原理剖析及解决方案
  9. 数据库实例:mysql与mongo结合用户登录
  10. linux中UDP程序流程、客户端、服务端