linux--Autotools

  • 1 介绍
    • Automake
    • Gnulib
    • Libtool
  • 2 步骤
    • cmake的步骤
  • 3 Autotools发展史 引[Autotools发展史](https://www.homedt.net/16685.html)
    • 手写makefile时代
    • Autoconf时代
    • automake时代
    • libtool时代
  • 参考

1 介绍

Autoconf是一个用于生成shell脚本的工具,可以自动配置软件源代码以适应多种类似POSIX的系统。为了让你的软件包在所有的不同系统上都可以进行编译。Autotools主要有Autoconf、automake、libtool等软件包工具组成,我们可以称为Autotools三剑客。
本质是产生makefile文件的工具。
cmake产生的晚,解决了很多autotools工具的问题。autotools是一个工具集具有强大的灵活性,但是因为步骤太多,配置繁琐,产生了很多的替代方案,cmake是其中最优秀的之一。

Automake

为了兼容各个系统的make使用。
从Makefile.am文件和Autoconf一起生成Makefile.in文件。

Gnulib

这是GNU代码的中央仓库,目的是共享免费的软件包。它的共享是源码级别的,只需要从上面直接拉取到自己的源码树。

Libtool

生产动态的共享库是非常困难的事情,每个系统都有自己的编译工具、编译标志、etc.。
Libtool会处理所有的共享库请求。需要共享库的时候会自Libtool会自动地被使用,无需知晓其语法规则。

2 步骤

1.运行autoscan命令
2.将configure.scan 文件重命名为configure.in,并修改configure.in文件
3.在project目录下新建Makefile.am文件,并在core和shell目录下也新建makefile.am文件
4.在project目录下新建NEWS、 README、 ChangeLog 、AUTHORS文件
5.将/usr/share/automake-1.X/目录下的depcomp和complie文件拷贝到本目录下
6.运行aclocal命令
7.运行autoconf命令
8.运行automake -a命令
9.运行./confiugre脚本

cmake的步骤

1.编写CMakeLists.txt
2.运行cmake命令

3 Autotools发展史 引Autotools发展史

Makefile语法复杂、难以维护。对于一个小项目还好,对于大型的项目和开源项目,现在流行使用一些工具自动生成Makefile,可以大大减轻软件开发人员的负担。
比较常见的工具有GNU Autotools、CMake、QMake、SCons、Ant等。

手写makefile时代

早期我们在Unix、linux环境下开发软件,makefile都是手写的

Autoconf时代

后来linux操作系统问世,后续的版本也越来越多,各种发布版本错综复杂,差异越来越大,甚至包括操作系统的接口都出现差异。这时候别说makefile能不能正确编译的问题了,就连我们编写的应用程序,即使编译正确,也有可能在其它的平台上运行不起来。这个问题,大家都知道,后来出现了POSIX API标准,就是可移植的操作系统接口。对于makefile来说,为了适配操作系统的更多版本,只能不断地添加代码,这就导致configure脚本越来远大,导致后来开发人员再也受不了了,维护成本越来越高。
1991年,David Mackenzie开发了Autoconf工具,用来自动生成configure脚本
用户只需要定义几个宏,表示我们关心的配置选项,保存在configure.ac文件里,然后使用Autoconf工具就可以帮我们自动生成configure脚本了!

automake时代

然而,随着项目越来越大,makefile也越来越复杂,尤其是大型项目,手写越来越困难,怎么办?
automake工具这个时候闪亮登场了!
对于开发人员来说,我们关心的就是这个项目要生成什么可执行文件,需要编译哪些源文件,至于怎么编译的?底层的链接细节,鬼才懒得管。
后来,为了进一步减少工作量,又出现一个aclocal工具,会自动将automake、autoconf以及用户定义的所有宏统统放在aclocal.m4文件里。
为什么要保存在aclocal.m4这种格式的文件里?我也不知道…,m4,macro宏后面4个字母,缩写就是m4.

libtool时代

随着Unix、Linux之间的差异越来越大,对动态共享库的管理差异也越来越大,比如有些共享库,使用.so格式,有的是.a,有的是.o的形式。运行时对动态库的管理方式也一样,有的操作系统支持动态加载,有的就不支持。这就对我们Makefile带来了挑战。怎么办?libtool的工具出现就是为了解决这个问题的,它通过对生成的动态库进行抽象,统一生成.la的形式,可以支持十几种各种不同的平台。

参考

1、官方autoconf
2、Autoconf简介
3、cmake与autoconf+automake的对比
4、Autotools
5、在Linux操作系统下自动生成Makefile的方法
6、autotools简介0
7、Autotools发展史
8、autoconf介绍1

linux--Autotools相关推荐

  1. autotools归纳

    最近接触到许多linux项目,其编译都是使用的autotools. autotools是一个自动化的编译工具.个人理解它的最主要功能就是生成Makefile. 因为直接写Makefiel,其依赖关系还 ...

  2. Ubuntu16.04搭建OpenGrok环境

    搭建的目标平台系统版本: Ubuntu 16.04.2 LTS  . 本方法对其它ubuntu版本同样适用. 准备以下Tools: apache-tomcat-9.0.8(https://tomcat ...

  3. Linux下autoTools工具集使用介绍

    Author : iStone E-mail : liul.stone@gmail.com Date : 2015-09-19 15:16:38 一 使用autoTools工具集 1.1 什么是aut ...

  4. Linux Test Project 测试套件说明

    LTP(Linux Test Project) Linux Test Project 是由SGI.OSDL和Bull开发和维护的一个项目,由IBM.思科.富士通.SUSE.Red Hat.Oracle ...

  5. Android Linux内核编译调试

    对于在Windows上写代码写习惯的人,调试是必不可少的手段,但是转到Android以后,发现调试手段异常简陋,跟Windows简直不是一个级别,特别是Android的内核调试,网上资料也相对较少,不 ...

  6. ALSA(二), makefile, Autotools, premake

    http://antkillerfarm.github.io/ 从Gstreamer到ALSA(续) 4.SOC_SINGLE类宏 这里对SOC_SINGLE类的宏,详细说明一下,因为只有这些宏才是真 ...

  7. Linux程序设计实验项目六,《linux程序设计》实验教学大纲

    <linux程序设计>实验教学大纲 课程名称:Linux程序设计 课程编号:408412420408436407 适用专业:计算机科学与技术网络工程软件工程 总 学 分:3 总 学 时:4 ...

  8. 如何使用autotools工具

    autotools是系列工具,读者首先要确认系统是否装了以下工具(可以用which命令进行查看). autoscan aclocal autoheader automake autoconf 使用au ...

  9. autotools使用

    Makefile固然可以帮助make完成它的使命,但要承认的是,编写Makefile确实不是一件轻松的事,尤其对于一个较大的项目而言更是如此.那么,有没有一种轻松的手段生成Makefile而同时又能让 ...

  10. 使用Linux auto Makefile自动生成的运行步骤

    首先创建一个 Linux Makefile.am.这一步是创建Linux Makefile很重要的一步,automake要用的脚本配置文件是Linux Makefile.am,用户需要自己创建相应的文 ...

最新文章

  1. 【分享】bootstrap学习笔记
  2. MFC界面库BCGControlBar v25.3新版亮点:Gauge Controls
  3. adb通信协议分析以及实现(二):adb服务进程发现设备
  4. 1.2 @Override注解
  5. 销售订单定价-客户取值
  6. 雨林木风系统md5值_微软停止Windows系列新系统开发,珍惜你的Win10吧。。。
  7. 【Android工具类】Activity管理工具类AppManager
  8. 单用户修改root密码--redhat7.2 or centos7
  9. 第二章 ELKstack部署及配置
  10. 同一个项目的不同的项目工作经验总结--程序员丁
  11. p40_数据交换方式
  12. 如何使用pyspark
  13. linux 的 tar -zxvf出错解决方案
  14. VMware11.1.2+centOS7.4虚拟机联网问题并设置静态IP
  15. 【2022最新版】Java零基础入门教程_零基础学Java_Java入门教程
  16. android markdown编辑器,安卓版好用的Markdown编辑器
  17. 金蝶K3系统与防火墙集成部署方案
  18. 《我奋斗了18年才和你坐在一起喝咖啡》,而我奋斗了18年,不是为了和你一起喝咖啡(转载)...
  19. 锦天科技被盛大收购 23岁创始人成亿万富翁
  20. Tarjan算法附图详解(SCC)

热门文章

  1. 面试:ConcurrentHashMap线程安全吗
  2. 图论 —— AOV 网与拓扑排序
  3. 图的应用(AOV网、AOE网、图连通性)
  4. UML之6种关系的解释与画法
  5. Chaikin细分曲线
  6. IC专业词汇( 一 )——LED术语集
  7. TextField 与FTE的使用情景
  8. C#作为游戏脚本的目录结构
  9. 【论文译文】S³GAN(CompareGAN)
  10. Springboot整合Socket长连接