最近接触到许多linux项目,其编译都是使用的autotools。
autotools是一个自动化的编译工具。个人理解它的最主要功能就是生成Makefile。
因为直接写Makefiel,其依赖关系还是比较复杂的。一般的我们下载的源码包只要通过以下3条命令,就可完成编译和安装:
./configure
make
sudo make install但是autotools其本来还是非常复杂的,下面给出参考
以下是命令列表:
autoscan        扫描给定的目录及其子目录,以搜寻普通的可移植性问题,比如检查编译器,库,头文件等。生成的configure.scan是configure.ac文件的原型。aclocal         是一个收集宏的过程。将已经安装的宏、用户定义宏和acinclude.m4文件中的宏集中定义到文件aclocal.m4中。autoheader      生成宏定义的模板文件config.h.in。宏定义模板文件被后面的命令所需要。automake        根据configure.ac和Makefile.am中定义的结构,生成Makefile.in文件。libtoolize      如果在configure.ac中定义了一些特殊的宏,比如AC_PROG_LIBTOO,automake将会调用此命令。autoconf        生成configure脚本文件。make distclean  清除所有生成的文件./configure     生成Makefile。make            编译。make install    把程序安装到系统目录中去。make uninstall  卸载程序。make clean      清除生成的目标文件及过程中产生的文件。make distclean  清除所有产生的文件。make dist       将程序和相关的文档打包为一个.tar.gz压缩文件以供发布。autoupdate      如果更新了Autoconf工具的版本,此命令可更新configure.in。
autoreconfig    如果更新了Autoconf工具的版本,此命令可更新产生的配置文件。
ifname          扫描C源程序文件,在标准输出上输出那些出现在#if,#elif,#ifdef或#ifndef中的标识符,每个标识符显示为一行,其后跟一空格和所属的文件名。command       input              output
--------------------------------------------------
autoscan      [source]           configure.scanautoscan.logaclocal       configure.ac       aclocal.m4autoheader    aclocal.m4         autoconfig.h.inautomake      configure.ac       INSTALLmakefile.am        Makefile.inCOPYINGinstall-shmissingmkinstalldirsstamp-h.inlibtoolize                       config.guessconfig.subltmain.shltconfigautoconf      configure.ac       configureaclocal.m4autoconfig.h.incommand         input                      output
-----------------------------------------------------------------
configure       configure                  MakefileMakefile.in                config.hcofnig.h.in                config.logXXXXX.pc.in                config.statusXXXXX-uninstalled.pc.in    libtoolXXXXX.pcXXXXX-uninstalled.pcstamp-h1make            Makefilemake install    Makefilemake uninstall  Makefilemake clean      Makefilemake distclean  Makefilemake dist       Makefilelinux中怎安装autotools系列工具
autotools使用流程
正如前面所言,autotools是系列工具,读者首先要确认系统是否装了以下工具(可以用which命令进行查看)。
· aclocal
· autoscan
· autoconf
· autoheader
· automake
使用autotools主要就是利用各个工具的脚本文件以生成最后的Makefile。其总体流程是这样的:
· 使用aclocal生成一个“aclocal.m4”文件,该文件主要处理本地的宏定义;
· 改写“configure.scan”文件,并将其重命名为“configure.in”,并使用autoconf文件生成configure文件。
接下来,笔者将通过一个简单的hello.c例子带领读者熟悉autotools生成makefile的过程,由于在这过程中有涉及到较多的脚本文件,为了更清楚地了解相互之间的关系,强烈建议读者实际动手操作以体会其整个过程。
1.autoscan
它会在给定目录及其子目录树中检查源文件,若没有给出目录,就在当前目录及其子目录树中进行检查。它会搜索源文件以寻找一般的移植性问题并创建一个 文件“configure.scan”,该文件就是接下来autoconf要用到的“configure.in”原型。如下所示:
[root@localhost automake]# autoscan
autom4te: configure.ac: no such file or directory
autoscan: /usr/bin/autom4te failed with exit status: 1
[root@localhost automake]# ls
autoscan.log configure.scan hello.c
如上所示,autoscan首先会尝试去读入“configure.ac”(同configure.in的配置文件)文件,此时还没有创建该配置文件,于是它会自动生成一个“configure.in”的原型文件“configure.scan”。
2.autoconf
configure.in是autoconf的脚本配置文件,它的原型文件“configure.scan”如下所示:
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59)
#The next one is modified by sunq
#AC_INIT(FULL-PACKAGE-NAME,VERSION,BUG-REPORT-ADDRESS)
AC_INIT(hello,1.0)
# The next one is added by sunq
AM_INIT_AUTOMAKE(hello,1.0)
AC_CONFIG_SRCDIR([hello.c])
AC_CONFIG_HEADER([config.h])
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
下......余下全文>>Linux autotools有什用
一般的项目编译安装的过程:
o bootstrap:检测autoconf、automake、libtool及其版本并完成初始化,生成configure;
o configure:检测系统平台及软硬件环境,确定适用本地环境的编译策略,生成Makefiles;
o make:编译、链接;
o make install:安装;
o ldconfig:配置环境变量。
对于开发者而言,则需要通过autotools的autoconf、automake为用户组织起上面的过程。

  

转载于:https://www.cnblogs.com/xiaoit/p/4502695.html

autotools归纳相关推荐

  1. 读后感与机翻《基于理论的因果迁移:结合实例级的归纳和抽象级的结构学习》

    研究朱松纯FPICU体系的第 3 篇文章 <Theory-based Causal Transfer: Integrating Instance-level Induction and Abst ...

  2. Pandas SQL 语法归纳总结,真的太全了

    作者 | 俊欣 来源 | 关于数据分析与可视化 对于数据分析师而言,Pandas与SQL可能是大家用的比较多的两个工具,两者都可以对数据集进行深度的分析,挖掘出有价值的信息,但是二者的语法有着诸多的不 ...

  3. mysql 二级什么意思_MySQL二级等级考试归纳——PHP篇

    终于到最后一篇了--累死宝宝了-- 基于二级考试的书写的php部分,不会太深,大概就是归纳一下书上有的内容,详细的PHP就科科 之前没接触过PHP,网上好多好教程,真后悔赶时间没去看那些教程直接跟着书 ...

  4. c语言中小数乘法怎样写程序,四年级下册lbrack;小数乘法rsqb;知识点归纳

    与<四年级下册[小数乘法]知识点归纳>相关的范文 北师大版小学数学一年级(上册)知识点归纳 本册教材的教学内容 1 北师大版一年级数学(下册)知识点 一年级下册知识领域及结构图 一. 生活 ...

  5. 网关拓扑结构与功能设计归纳

    引言 本文就网关拓扑结构和常见功能与设计点归纳整理. 一.网络拓扑与流量走向 1.网络拓扑架构 下面是一个比较通用的南北流量网关部署架构,各个层次如下: 终端服务层:公司提供的各种设备.APP等 四层 ...

  6. 异地多活实践与设计思考点归纳

    引言 在异地多活项目整体推过程中的一些注意事项和设计点归纳和整理,抛砖引玉,其中一些点还有待深入探讨和优化. 一.指导事项归纳 1.多活原因归纳 推动多活的原因大体可归纳为以下三种. 高可用架构部署 ...

  7. zookeeper版本更新_Zookeeper归纳

    写在开头: 本章是zookeeper学习归纳,着重于复习盘点zookeeper的大部分知识点. 文章内容输出来源:拉勾教育大数据高薪训练营. 1.什么是zookeeper? Zookeeper 是⼀个 ...

  8. 第五课.可变图结构下的归纳式学习图注意力

    目录 图采样聚合网络 Inductive and Transductive Learning GraphSAGE 算法流程 GraphSAGE与InductiveLearning的关系 损失函数 注意 ...

  9. 生物什么时候学公式计算机,高考生物重要规律性关系及公式精华归纳,转走吧!...

    原标题:高考生物重要规律性关系及公式精华归纳,转走吧! 生物是理科中的文科,虽然大部分知识是让记忆的,但是还是有计算的,而且涉及计算的还是大分值的,为了这个大分值,还是拼了吧!本文总结高中生物中的所有 ...

最新文章

  1. FFmpeg简介及在vc2010下编译步骤
  2. linux 命令终端显示-bash-4.2#解决方法
  3. 转:Excel导出问题(导出时不去掉前面的0)
  4. Java程序设计4——集合类
  5. Python数据类型-----列表
  6. qt中关于按钮的click()函数卓见
  7. linux下vim 选择文本,删除,复制,粘贴
  8. 正则表达式 以字符串开头_干货-Shell编程之正则表达式
  9. python3 闭包
  10. sqlserver 2008修改数据库表的时候错误提示“阻止保存要求重新创建表的更改”...
  11. 手机屏幕坏了____怎么把里面的资料导出(18种方法)
  12. 快递物流行业如何用易语言对接验证码短信接口DEMO示例
  13. 快速学会普源示波器的调节和使用
  14. 4133:垃圾炸弹 百练noi Java枚举
  15. adb 连接某个wifi_adb wifi 测试(无需root)
  16. office卸载工具怎么用(官方干净卸载方法)
  17. 第七篇 SQL从安装到卸载
  18. 前端经典面试题 | 闭包的作用和原理
  19. getUserMedia API及HTML5 调用手机摄像头拍照
  20. Best Service Accordions 2 Kontakt 综合手风琴音色库

热门文章

  1. 数据结构折半查找例题_山东2011专升本计算机专业数据结构练习题 - 图文
  2. html优化的基本网页布局,网站页面标题的SEO优化及布局要点
  3. Sitemesh3使用及配置
  4. ora-04098 触发器无效且未通过重新验证
  5. 【CF 670C】Cinema
  6. 【Python3】【爬虫】meizituSpider
  7. 虚拟机linux gedit,Linux系统中把gedit改造成TextMate的方法
  8. Servlet→对象监听器、事件监听器、Session钝化活化、@WebListener标注、过滤器概念原理生命周期、过滤器链、@WebFilter标注、定时器Timer、cancel()、purge
  9. python官方文档怎么样_python官方文档
  10. java关键字只static