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。
autotools入门笔记(一)的更多相关文章
- autotools入门笔记(二)——创建和使用静态库、动态库
带有静态库或者动态库的工程的构建过程与上一节()只包含一个源文件的工程的构建过程是类似的.只是对于复杂的工程,如果包含多个还有源文件的目录时,需要对每个包含源文件的目录执行构建过程,另外创建和使用库文 ...
- 每天成长一点---WEB前端学习入门笔记
WEB前端学习入门笔记 从今天开始,本人就要学习WEB前端了. 经过老师的建议,说到他每天都会记录下来新的知识点,每天都是在围绕着这些问题来度过,很有必要每天抽出半个小时来写一个知识总结,及时对一天工 ...
- ES6入门笔记
ES6入门笔记 02 Let&Const.md 增加了块级作用域. 常量 避免了变量提升 03 变量的解构赋值.md var [a, b, c] = [1, 2, 3]; var [[a,d] ...
- [Java入门笔记] 面向对象编程基础(二):方法详解
什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...
- React.js入门笔记
# React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的 ...
- redis入门笔记(2)
redis入门笔记(2) 上篇文章介绍了redis的基本情况和支持的数据类型,本篇文章将介绍redis持久化.主从复制.简单的事务支持及发布订阅功能. 持久化 •redis是一个支持持久化的内存数据库 ...
- redis入门笔记(1)
redis入门笔记(1) 1. Redis 简介 •Redis是一款开源的.高性能的键-值存储(key-value store).它常被称作是一款数据结构服务器(data structure serv ...
- OpenGLES入门笔记四
原文参考地址:http://www.cnblogs.com/zilongshanren/archive/2011/08/08/2131019.html 一.编译Vertex Shaders和Fragm ...
- OpenGLES入门笔记三
在入门笔记一中比较详细的介绍了顶点着色器和片面着色器. 在入门笔记二中讲解了简单的创建OpenGL场景流程的实现,但是如果在场景中渲染任何一种几何图形,还是需要入门笔记一中的知识:Vertex Sha ...
随机推荐
- POJ 2449 求第K短路
第一道第K短路的题目 QAQ 拿裸的DIJKSTRA + 不断扩展的A* 给2000MS过了 题意:大意是 有N个station 要求从s点到t点 的第k短路 (不过我看题意说的好像是从t到s 可能是 ...
- 17.1 Replication Configuration
17.1 Replication Configuration 17.1.1 How to Set Up Replication 17.1.2 Replication Formats 17.1.3 Re ...
- 一步一步重写 CodeIgniter 框架 (11) —— 使用 CodeIgniter 函数库
在完成了CI框架的类库扩展后,很自然我们就会想到函数库的扩展.函数库的扩展在 CI 中称为 helper 函数与类有不同的地方,它不能继承,只能覆盖或者添加新的函数,或者直接完全新定义的一组函数. 由 ...
- c-大量经典的c算法---ShinePans
经典的100个c算法 算法 题目:古典问题:有一对兔子.从出生后第3个月起每一个月都生一对兔子.小兔 子长到第三个月后每一个月又生一对兔子,假如兔子都不死,问每一个月的兔子总数 为多少? _____ ...
- python package的概念
主目录下面文件夹pack,可以按照 import pack.mo as mo 来调用模块,意为把pack文件夹当作一个包
- Oracle多实例的配置方法
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME /dbhome_2) (PROGRAM ...
- 双卡双待支持双电池 夏新N808深度评测_夏新手机评测-泡泡网
双卡双待支持双电池 夏新N808深度评测_夏新手机评测-泡泡网 双卡双待支持双电池 夏新N808深度评测
- js入门——Dom基础
DOM=DocumentObject Model,文档对象模型. Dom有三个不同的部分. 1.核心DOM 也是最基础的文档结构的标准模型 2.XMLDOM 针对XML文档的标准模型 3.HTML D ...
- Cloud Foundry 中国群英会【上海站、成都站】资料宣传
关注云计算和PaaS层的童鞋可以了解下: http://www.cloudfoundry-heroes-summit.com/shanghai http://www.cloudfoundry-hero ...
- perl $d = encode_utf8($r); $f = decode_json($d)
[root@dr-mysql01 ~]# cat a1.pl my $url="http://192.168.32.101:3000/api/getcode?env=zj&phone ...