编译器转换源代码后,就会生成本地文件。不过,本地文件是无法直接运行的。
为了得到可以运行的EXE文件,编译之后还需要进行“链接”处理。下面,就让我们使用Borland C++ Compiler5.5(以下称为Borland C++)来看一下编译和链接是如何进行的。
Borland C++的编译器是bcc32.exe这个命令行工具。在Windows的命令提示符 中,运行下列命令后,由C语言编写的源文件Smaple1.c就会被编译。
bcc32 -W -c Samplel.c(“-W-c”是用来指定编译Windows用的程序的选项。选项是对编译器的指示。有时也称为“开关”。)
编译后生成的是“.obj”的目标文件。Sample1.c编译后,就生成了Sample1.obj目标文件。虽然目标文件的内容是本地代码,但却无法直接运行。那么这是为什么呢?原因就是当前程序还处于未完成状态。
(1)围起来的函数Average()同(2)围起来的函数WinMain()是程序员自己作成的,处理内容记述在源代码中。Average()是用来返回两个参数数值的平均值的函数,Winmain()是程序的运行起始函数。除此之外,还有(3)指出的sprintf(函数和(4)指出的MessageBox()函数。sprintf()是通过指定格式把数值变换成字符串的函数,MessageBox()是消息框函数,不过源代码中都没有记述这些函数的处理内容。因此,这时就必须将存储着sprintf(和MessageBoxO的处理内容的目标文件同Sample1.obj结合,否则处理就不完整,EXE文件也就无法完成。
把多个目标文件结合,生成1个EXE文件的处理就是链接,运行连接的程序就称为链接器(linkage editor或连结器)。Borland C++的链接器就是ilink32.exe的命令行工具。在Windows命令提示符下运行以下命令后,程序所需的目标文件就会被全部链接生成Sample1.exe这个EXE文件。
标签:可执行文件,文件,EXE,函数,仅靠,编译,Sample1,链接,8.4 From: https://www.cnblogs.com/ttmeng/p/17117750.html