美文网首页
002-关于程序的编译和链接

002-关于程序的编译和链接

作者: 山的那边是什么_ | 来源:发表于2018-10-20 21:56 被阅读3次

一般来说,无论是 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.

相关文章

  • 002-关于程序的编译和链接

    一般来说,无论是 C、C++、还是 pas, 首先要把源文件编译成中间代码文件,在 Windows 下也就是 .o...

  • Linux主程序子程序编译,链接; makefile编写和tar

    主程序子程序的编译和链接 主程序 hello.c 子程序 thanks.c 编译 -c 是免去链接,否则主程序调用...

  • Linux 编译和链接程序

    Linux 编译和链接程序 使用编译器gcc g++Linux可执行程序编译步骤1、编译c/cpp文件 ->.o2...

  • Linux C基础

    编译和链接 fred.c bill.c 编写头文件"lib.h" 主文件 "program.c" 编译和链接程序 ...

  • makefile入门二

    Makefile教程(绝对经典,所有问题看这一篇足够了) makefile很重要 0.1 关于程序的编译和链接 在...

  • 程序编译链接

    问:程序链接过程是把不同的程序段链接起来,是不是因为有的函数是用单独的头文件写着,所以需要include,链接的过...

  • 第四章 1程序编译连接

    1、程序的装入和链接 程序进内存的一般过程:a.编译compiler:编译程序:将用户源代码编译成若干个目标模块。...

  • 第四章 存储管理 1.程序编译连接

    1、程序的装入和链接 程序进内存的一般过程: 1.编译compiler:编译程序:将用户源代码编译成若干个目标模块...

  • 四.(1)程序编译连接

    1、程序的装入和链接 程序进内存的一般过程: 1.编译compiler:编译程序:将用户源代码编译成若干个目标模块...

  • 第四章 存储器管理1

    4.1程序的装入和链接 1、创建进程的第一件事:将程序和数据装入内存。 2、程序的装入和链接 1)编译 2)链接 ...

网友评论

      本文标题:002-关于程序的编译和链接

      本文链接:https://www.haomeiwen.com/subject/krqvzftx.html