龙空技术网

Autotools为什么这么难用呢?

hlqqlm 167

前言:

眼前各位老铁们对“autotools教程”可能比较关切,兄弟们都想要知道一些“autotools教程”的相关知识。那么小编在网摘上汇集了一些有关“autotools教程””的相关知识,希望兄弟们能喜欢,咱们快快来学习一下吧!

Autotools是unix/linux下构建工具。Autotools = autoconf + automake + libtool等。为什么是这样的呢?

它的出现,目的是为了解决unix/linux下程序编译可移植问题,为了解决这个问题,经历了一系列过程。

最早,unix系统种类少,程序员写makefile,来构建程序。

hello <---------------[make(Makefile)]-------------hello.c

随着unix种类增多,不得不增加一个脚本configure,用configure + makefile形式,来解决不同系统之间的差异。configure检查当前系统环境(装了哪些程序,哪些库,哪些头文件,路径是什么,版本是多少),来生成控制变量,进而改变makefile行为,这称为配置。

hello <---------[make(Makefile<----------configure)]-------------------hello.c

linux出现了,而且linux系统逐渐增加,debian、redhat、ubuntu...,种类越来越多,差异也越来越大,差异就是:装的程序、库、头文件不同,名字不同,路径不同,版本不同。configure脚本越来越大,makefile也越来越大,程序员都受不了了。1991年,David Mackenzie开发了Autoconf工具,用来自动生成configure脚本。它的作用,是写一个configure.ac文件,里面是一些宏,运行autoconf,就可以自动生成configure这个文件,

hello <---------[make(Makefile<----------configure<-------[autoconf]--------configure.ac)]-------------------hello.c

automake的出现,和autoconf出现原因类似。随着项目规模增大,makefile越来越大。automake的出现,让程序员不用关心细节,只用写一个Makefile.am文件,定义目标,指定源文件列表,然后用automake,就可以生成Makefile.in,这是一个包含程序编译、链接通用规则的文件,然后再运行./configure(前面autoconf生成的配置脚本,和具体平台绑定),就可以生成Makefile。

hello <---------[make(Makefile.am-------[automake]----->Makefile.in----[./configure]---->Makefile<----------configure<-------[autoconf]--------configure.ac)]-------------------hello.c

可以看到,autotools的出现,就是程序员为偷懒,而不断创建工具的历史。

标签: #autotools教程