C语言编译工具学习总结

原创 2018年04月17日 11:26:43

    在研发的过程中我们常常需要安装一些程序,其中一种重要的按照方式便是从源码安装。像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语言那些事儿

-
  • 1970年01月01日 08:00

C语言编译工具学习总结

    在研发的过程中我们常常需要安装一些程序,其中一种重要的按照方式便是从源码安装。像Redis,mysql,php, nginx这些开源的程序都可以从源码。在我们下载到源码之后,在README文档...
  • qq_17463455
  • qq_17463455
  • 2018-04-17 11:26:43
  • 34

C语言总结

1.简述C C语言不但执行效率高而且可移植性好,可以用来开发应用软件、驱动、操作系统等。 2 第一个C程序 #include int main(){ printf("Hello...
  • qq_29272491
  • qq_29272491
  • 2017-12-14 18:27:26
  • 482

C语言编译过程总结详解

C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作...
  • yu132563
  • yu132563
  • 2015-04-08 09:45:02
  • 277

C语言小结

C语言小结,适用于有其他编程语言基础的开发者#include int main() { /* 我的第一个 C 程序 */ printf("Hello, World! \n"); return...
  • King1425
  • King1425
  • 2017-04-20 11:40:32
  • 815

<em>C语言</em>编程精粹 多年编程经验的<em>总结</em>

有编程经验的人一看就知道这是本非常好的书,多年的经验<em>总结</em>,教师;学者写不来...编程精粹--编写高质量<em>C语言</em>代码(1):假想<em>编译</em>程序 OpenGL实例编程精粹源码 立即...
  • 2018年04月16日 00:00

C语言学习总结(一)

在千锋IOS培训的第一阶段结束了,回顾这段时间还是很有收获的。有时候我会想,相对与我的大学生涯相比,我对C语言对OOP思想都有了更深的理解和使用技巧,在能力上还是有长进的。如下做各章节知识点回顾,完全...
  • yangbo_hbzjk
  • yangbo_hbzjk
  • 2012-11-16 16:07:22
  • 1353

C语言程序设计学习总结

最近忙于学习C语言程序设计,考计二C。都搞得我头晕眼花,天天都是刷题。马上就要考计二C了。我想总结一下我对C语言的理解。 C不同于java的最大区别在于C是面向过程,而java是面向对象。刚开始我也搞...
  • qq_35542689
  • qq_35542689
  • 2017-03-23 15:57:51
  • 1698

大一学完C语言课程的回顾与总结

回顾这是个人的经历,不想看的可以跳过。    在高考完确定自己大学的专业是计算机的时候,就有打算自学C语言,当时不知道MOOC这种东西,是在网上找的郝斌老师C语言教学视频,当时对计算机编程语言可说是没...
  • Vanity_Xi
  • Vanity_Xi
  • 2018-02-09 21:48:32
  • 33

C语言学习总结(五)——C库函数总结

C 库函数主要指那些由美国国家标准协会(ANSI)或国际标准化组织(ISO)发布的标准中规定的库函数,按照标准 C 的要求来进行 C 语言编程是很重要的,因为这样你的代码才有可能跨平台使用。 最...
  • myintelex
  • myintelex
  • 2016-12-26 18:22:09
  • 662
收藏助手
不良信息举报
您举报文章:C语言编译工具学习总结
举报原因:
原因补充:

(最多只允许输入30个字)