• makefilepdf > 跟我一起写Makefile2005
  • 跟我一起写Makefile2005

    免费下载 下载该文档 文档格式:PDF   更新时间:2009-06-02   下载次数:0   点击次数:2
    文档基本属性
    文档语言:English
    文档格式:pdf
    文档作者:Craig Kaplan
    关键词:
    主题:
    备注:
    点击这里显示更多文档属性
    跟我一起写 Makefile 20051201 09:22:00~20051201 10:43:00 作者:陈皓 整理:李大锋
    跟我一起写 Makefile
    1.1 概述
    什么是makefile 或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE 都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂. 这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML 的标识的含义. 特别在Unix下的软件编译, 你就不能不自己写makefile了, 会不会写makefile, 从一个侧面说明了一个人是否具备完成大型工程的能力. 因为,makefile关系到了整个工程的编译规则.一个工程中的源文件不计数,其按类型, 功能,模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先 编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令. makefile带来的好处就是——"自动化编译",一旦写好,只需要一个make命令,整个工 程完全自动编译, 极大的提高了软件开发的效率. make是一个命令工具, 是一个解释makefile 中指令的命令工具, 一般来说, 大多数的IDE都有这个命令, 比如: Delphi的make, Visual C++ 的nmake,Linux下GNU的make.可见,makefile都成为了一种在工程方面的编译方法. 现在讲述如何写makefile的文章比较少,这是我想写这篇文章的原因.当然,不同产商的 make各不相同,也有不同的语法,但其本质都是在"文件依赖性"上做文章,这里,我仅对 GNU的make进行讲述,我的环境是RedHat Linux 8.0,make的版本是3.80.必竟,这个make 是应用最为广泛的,也是用得最多的.而且其还是最遵循于IEEE 1003.2-1992 标准的 (POSIX.2). 在这篇文档中,将以C/C++的源码作为我们基础,所以必然涉及一些关于C/C++的编译的知 识,相关于这方面的内容,还请各位查看相关的编译器的文档.这里所默认的编译器是UNIX 下的GCC和CC.
    1.2 关于程序的编译和链接
    在此,我想多说关于程序编译的一些规范和方法,一般来说,无论是C,C++,还是pas, 首先要把源文件编译成中间代码文件,在Windows下也就是 .obj 文件,UNIX下是 .o 文件, 即 Object File,这个动作叫做编译(compile).然后再把大量的Object File合成执行文 件,这个动作叫作链接(link).
    第 1 页 共 7 页 内部资料,注意保密
    跟我一起写 Makefile 20051201 09:22:00~20051201 10:43:00 作者:陈皓 整理:李大锋
    编译时,编译器需要的是语法的正确,函数与变量的声明的正确.对于后者,通常是你需 要告诉编译器头文件的所在位置(头文件中应该只是声明,而定义应该放在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. 好,言归正传,GNU的make有许多的内容,闲言少叙,还是让我们开始吧.
    1.3 Makefile 介绍

    下一页

  • 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
  • 免费下载 PDF格式下载
  • 您可能感兴趣的
  • makefile  linuxmakefile  跟我一起写makefile  makefilewildcard  makefile.am  makefile教程  makefile文件  自动生成makefile  简单的makefile  makefile编写