陈皓一起写Makefile 概述

  make是一个命令工具,是一个解释Makefile中指令的命令工具.一般来说,大多数的 IDE 都有这个命令,比如: Delphi 的 make, Visual C++的 nmake, Linux 下 GNU 的 make。可见, makefile 都成为了一种在工程方面的编译方法。

  关于程序的编译和链接:在此,我想多说关于程序编译的一些规范和方法,一般来说,无论是 C、 C++、还是 pas,首先要把源文件编译成中间代码文件,在 Windows 下也就是 .obj 文件, UNIX 下是 .o 文件,即 Object File,这个动作叫做编译( compile)。然后再把大量的 Object File 合成执行文件,这个动作叫作链接( link)。先编译,后链接。

  编译时,编译器需要的是语法的正确,函数与变量的声明的正确。对于后者,通常是你需要告诉编译器头文件的所在位置(头文件中应该只是声明,而定义应该放在 C/C++文件中),只要所有的语法正确,编译器就可以编译出中间目标文件。一般来说,每个源文件都应该对应于一个中间目标文件( O 文件或是 OBJ 文件)。

  链接时,主要是链接函数和全局变量,所以,我们可以使用这些中间目标文件( O 文件或是OBJ 文件)来链接我们的应用程序。链接器并不管函数所在的源文件,只管函数的中间目标文件( Object File),在大多数时候,由于源文件太多,编译生成的中间目标文件太多,而在链接时需要明显地指出中间目标文件名,这对于编译很不方便,所以,我们要给中间目标文件打个包,在 Windows 下这种包叫“库文件”( Library File),也就是 .lib 文件,在 UNIX下,是 Archive File,也就是 .a 文件。

总结一下,源文件首先会生成中间目标文件,再由中间目标文件生成执行文件。在编译时,编译器只检测程序语法,和函数、变量是否被声明。如果函数未被声明,编译器会给出一个警告,但可以生成 Object File。而在链接程序时,链接器会在所有的 Object File 中找寻函数的实现,如果找不到,那到就会报链接错误码( Linker Error),在 VC 下,这种错误一般是:Link 2001 错误,意思说是说,链接器未能找到函数的实现。你需要指定函数的 Object File.

时间: 2024-08-08 05:31:03

陈皓一起写Makefile 概述的相关文章

跟我一起写Makefile:概述

什么是makefile?也许非常多Winodws的程序猿都不知道这个东西.由于那些Windows的集成开发环境(integrateddevelopment environment,IDE)都为你做了这个工作,但我认为要作一个好的和professional的程序猿,makefile还是要懂.这就好像如今有这么多的HTML的编辑器.但假设你想成为一个专业人士,你还是要了解HTML的标识的含义. 特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个側面说明了

怎么写makefile?(转)

跟我一起写 Makefile 陈皓 第一章.概述 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和 professional(专业)的程序员,makefile还是要懂.这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要 了解HTML的标识的含义.特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具 备完成大型工

转:跟我一起写Makefile (PDF重制版)

原文地址:http://seisman.info/how-to-write-makefile.html 其它一些问题  不妨看一下:http://blog.csdn.net/huyansoft/article/details/8924624 简化版  不妨看一下:http://blog.chinaunix.net/uid-26980210-id-3244651.html 跟我一起写 Makefile (PDF 重制版)By [email protected]作者: 陈皓2014 年 03 月 0

跟我一起写 Makefile(一)

跟我一起写 Makefile  陈皓 概述—— 什么是makefile?也许非常多Winodws的程序猿都不知道这个东西,由于那些Windows的IDE都为你做了这个工作,但我认为要作一个好的和professional的程序猿,makefile还是要懂.这就好像如今有这么多的HTML的编辑器,但假设你想成为一个专业人士,你还是要了解HTML的标识的含义.特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个側面说明了一个人是否具备完毕大型project的

跟我一起写 Makefile(一)【转】

转自:http://blog.csdn.net/haoel/article/details/2886 跟我一起写 Makefile 陈皓 概述—— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂.这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义.特别在Unix下的软件编译,你就不能不自己写m

跟我一起写 Makefile

转自 陈皓 的博客:http://blog.csdn.net/haoel/article/details/2886 1. 概述 2. 关于程序的编译和链接 3. Makefile 介绍 4. Makefile 总述 5. 书写命令 6. 使用变量 7. 使用条件判断 8. 使用函数 9. make 的运行 10. 隐含规则 11. 使用make更新函数库文件 1. 概述—— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,

【转】跟我一起写 Makefile(一)

跟我一起写 Makefile 陈皓 概述—— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂.这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义.特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力. 因为,

转载 跟我写Makefile

跟我一起写 Makefile 陈皓 (CSDN) 概述—— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂.这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义.特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的

【转】[精华] 跟我一起写 Makefile

陈皓 概述  —— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂.这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义.特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力. 因为,makefile关系到了整