你的位置:首页 > 软件开发 > 操作系统 > 【LINUX网络编程】Makefile文件

【LINUX网络编程】Makefile文件

发布时间:2016-05-19 13:00:03
《Linux网络编程》(第二版) 第2章的一些读书笔记 ↓ Makefile:在一个含有较多文件的工程中,定义一系列规则来指定编译文件的顺序,可用于管理工程。Makefile指定了工程中的哪些源文件需要编译以及如何编译、需要创建那些库文件以及如何创建这些库文 ...

【LINUX网络编程】Makefile文件

Linux网络编程》(第二版) 第2章的一些读书笔记 ↓

 

Makefile:在一个含有较多文件的工程中,定义一系列规则来指定编译文件的顺序,可用于管理工程。

Makefile指定了工程中的哪些源文件需要编译以及如何编译、需要创建那些库文件以及如何创建这些库文件、如何最后产生我们想要的可执行文件。为工程编写Makefile 的好处是能够使用一行命令来完成“自动化编译”,编译整个工程你所要做的唯一的一件事就是在shell 提示符下输入make命令,整个工程就完全自动编译。

 

首先来看一下Linux下的GCC(GNU Compiler Collection):这是一个工具集,包含gcc(跟大写的不一样), g++等编译器和ar, nm等工具集。

GCC编译器对程序的编译有4个阶段:预编译 -> 编译和优化 -> 汇编 -> 链接,下面以c代码作例子:

源代码(*.c) 【预编译 -E】 预处理后的代码(*.i) 【编译和优化 -S】 汇编代码(*.s) 【汇编 -c】 目标文件(*.o) 【链接】 可执行文件

预编译过程是将程序中引用的头文件包含进源代码中,并对一些宏进行替换

编译和优化通常是翻译成汇编语言,汇编与机器操作码之间有一对一的关系

目标文件是指经过编译器的编译和汇编生成的CPU可识别的二进制代码,但是其中的一些函数过程没有相关的指示和说明,所以一般不能执行

目标文件需要用某种方式组合起来才可以运行,这就是链接

 

一些命令选项(假设文件名为hello.c):

gcc hello.c  /* 生成可执行文件,名字为默认的 a.out。gcc后面的不只可以是*.c文件,同样也可以是*.o或其他,以下的选项也是如此,只要被处理的文件的阶段在生成文件的阶段之前即可 */

gcc -o hello hello.c  /* 生成可执行文件,名字接在-o后面,即hello */

gcc -E hello.c  /* 经过预编译的过程,默认名字格式,产生了hello.i */

gcc -S hello.c  /* 经过了预编译和编译优化的过程,名字为默认的 hello.s */

原标题:【LINUX网络编程】Makefile文件

关键词:linux

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录