autotools入门笔记(一)
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入门笔记(一)相关推荐
- autotools入门笔记(二)——创建和使用静态库、动态库
带有静态库或者动态库的工程的构建过程与上一节()只包含一个源文件的工程的构建过程是类似的.只是对于复杂的工程,如果包含多个还有源文件的目录时,需要对每个包含源文件的目录执行构建过程,另外创建和使用库文 ...
- vue router 入门笔记
vue router 入门笔记 tips: components优先级大于component,即当一个route对象里同时配置了component和components时component视为无效 即 ...
- 十年公务员转行IT,自学AI三年,他淬炼出746页机器学习入门笔记
整理 | Jane 编辑 | Just 出品 | AI科技大本营(ID:rgznai100) 近期,梁劲传来该笔记重大更新的消息.<机器学习--从入门到放弃>这本笔记的更新没有停止,在基于 ...
- html缩进快捷键_HTML 入门笔记
HTML 入门笔记 HTML (HyperText Markup Language) 不是一门编程语言,而是一种用来告知浏览器如何组织页面的标记语言. HTML 可复杂.可简单,一切取决于开发者. 它 ...
- Python3入门笔记(1) —— windows安装与运行
Python3入门笔记(1) -- windows安装与运行 Python的设计哲学是"优雅"."明确"."简单".这也是我喜欢Python ...
- [Java入门笔记] 面向对象编程基础(二):方法详解
2019独角兽企业重金招聘Python工程师标准>>> 什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能 ...
- React.js入门笔记
# React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的 ...
- python3入门与进阶笔记_我的Python3萌新入门笔记
Python3萌新入门笔记是一系列真实的自学笔记. 当然,它也是比较全面的入门教程,共包括54篇笔记. 从第一篇笔记开始,大半年的时间我都是在自学和组织教程内容. 我觉得有必要,把我自己的学习过程和大 ...
- MySql入门笔记二~悲催的用户
这些是当年小弟的MySql学习笔记,木有多么复杂的结构操作,木有多炫丽的语句开发,木有...总之就是木有什么技术含量... 日复一日,彪悍的人生伴随着彪悍的健忘,运维操作为王,好记性不如烂笔头,山水有 ...
最新文章
- 实时把你的脸变成名画,手机摄像头新玩法
- 2.4 嵌入矩阵-深度学习第五课《序列模型》-Stanford吴恩达教授
- DayDayUp之Job:牛客网—算法工程师—剑指offer之66道在线编程(解决思路及其代码)——1~20
- Paper:《How far are we from solving the 2D 3D Face Alignment problem? 》解读与翻译
- 泛函分析——赋范线性空间定义的概念
- zenmap 的扫描方式
- 你初吻啥时候没有的​?​
- [Spring5]IOC容器_底层原理
- Java:放心(或非常容易)
- 将大型项目从Ant迁移到Maven
- 系统卡 服务器cpu 内存不足,电脑很卡 系统提示内存不足的解决办法
- 拓端tecdat|R语言绘制ggplot2双色XY-面积图组合交叉折线图可视化
- sphinx的使用1-创建索引
- Git报错remote: error: hook declined to update refs/heads/feature/XXX
- 2021年AR/VR创企融资39亿美元创纪录 元宇宙成为推手
- python分析微博数据中心_数据分析如何驱动社交媒体营运
- Aras innovator: TOC目录简单汉化方法
- 对图片或者PDF流文件加水印
- js-页面需展示大量图片时,采用lyz.delayLoading.min.js,图片在屏幕时加载显示
- 《大明王朝》掠之于官
热门文章
- python 清除字符串中的 emoji 表情
- LeetCode 1765. 地图中的最高点(BFS)
- LeetCode 214. 最短回文串(字符串哈希)
- LeetCode 1469. 寻找所有的独生节点
- LeetCode 1161. 最大层内元素和(层序遍历)
- axure选中后横线切换_Axure8.0|动态面板内容简单切换技巧
- 代写python代码一般多少钱_代写CO 353课程作业、代做Python程序设计作业、代写Python语言作业...
- python中遇到循环import即circular import的问题原理剖析及解决方案
- 数据库实例:mysql与mongo结合用户登录
- linux中UDP程序流程、客户端、服务端