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。

阅读更多
上一篇高性能服务器编程原理
下一篇C/C++/JAVA三大主力语言对比分析
想对作者说点什么? 我来说一句

CFree4.1 C语言编译工具

2009年12月29日 10.67MB 下载

C语言编译工具(LCC)

2007年11月04日 7.42MB 下载

没有更多推荐了,返回首页

关闭
关闭