C语言编译工具学习总结

    在研发的过程中我们常常需要安装一些程序,其中一种重要的按照方式便是从源码安装。像Redis,mysql,php, nginx这些开源的程序都可以从源码。在我们下载到源码之后,在README文档中常常告诉我们执行以下命令即可安装:

./configure

make 或者make install

一直很好奇这是怎么样的一个过程。一番研究之后终于知道了些眉目。在这里总结一下。

    首先,我们看看这个configure 是什么,vim打开他,这是个shell脚本。他的作用是用来生成Makefile文件的。

    然后,我们看看make这个命令是干什么的,用man make 查看帮助,发现它是gnu回来维护一组程序的工具。直白的讲,就是用来根据源码生成可执行文件的工具。很好奇,这个工具咋就知道按照什么样的步骤将我们的源码编译成可执行文件呢?其实是根据./configure 生成的Makefile 来生成的。

    到这儿,我们可能已经明白了个大概。但是这次好奇心再次拷问我:./configure 是这么生成Makefilede 呢。于是我打开./configure 文件,没读几行,发现这简直是个天书。很想知道作者是怎么写成的。

    经过一番google+baidu,一个主要的脉络出来了:./configure 是可用手工编写,但对于大型项目,各种依赖相当复杂,加上不同平台上的posix接口差异,人工编写的难度极大。于是有人就开发了一系列的工具来生成这个文件。

    了解到这个背景之后,我们可以想象,如果是我们自己编写这样的一套工具会怎么做呢,首先我们要知道这些源码都是什么,有一些什么样的兼容性需要处理。因此需要扫描代码,于是第一个神器autoscan出现了。man autoscan,生成一个configure.scan 文件。目前离我们的./configure 还很远,在网上一番查询之后,aclocal,automake,autoconf 一系列神器相继出现。下面我们就来看看这些神奇是如何制造出configure文件的。

    1.将configure.scan 重命名为configure.ac,修改其中的一写配置,添加AM_INIT_AUTOMAKE() 宏,作为aclocal的输入生成aclocal.m4 文件。m4文件的内容就是一系列的宏。

    2.执行autoconf,  autoheader 把aclocal.m4 转换成config.h config.h.in

    3.编写Makefile.ac 配置可执行文件名称,代码等,通过automake -a 命令,生成configure。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值