在这里,我们使用tc2.0提供的编译程序对程序进行编译连接,tc2.0提供的编译程序生成的代码是运行于8086PC模式的代码,因为在8086PC模式下,我们可以很容易体验c语言的一些底层开发。tc2.0所说很少人在用了,麻雀虽小五脏俱全,使我们从底层学习c,研究c的好编译器,为了更好的研究c,我们用其最小的工具来研究,即用到什么文件,我们就取其什么文件,用不到的我们暂且不去过问,下面我们首先将tc2.0的最小编译、连接环境搭建出来,以便于今后的研究。
首先我们从网上下载一个tc2.0,取出其中的tcc.exe拷贝到c:\c文件夹下
调试下面的a.c小程序:
int main(void)
{
int a=0;
printf("hello world!\n");
}
为了便于区分main函数,故在此加了一个a=0;
使用tcc a.c对上面的调试代码进行编译、连接;发现会抛出下面的错误!
C:\c>tcc a.c
Turbo C Version 2.0 Copyright (c) 1987, 1988 Borland International
a.c:
Warning a.c 5: 'a' is assigned a value which is never used in function main
Error 5: Unable to execute command 'tlink.exe'
警告我们在此先不去过问,那是我们的int类型的a变量未曾使用的警告,无法执行命令tlink.exe,也就是说我们的这个最小的编译、连接环境是需要tlink.exe,所以我们下一步就将此文件拷贝到我们的目录中来,再次进行tcc a.c;
C:\c>tcc a.c Turbo C Version 2.0 Copyright (c) 1987, 1988 Borland International
a.c:
arning a.c 5: 'a' is assigned a value which is never used in function main Turbo Link Version 2.0 Copyright (c) 1987, 1988 Borl nternational
c0s.obj : unable to open file
“c0s.obj : unable to open file”提示不能够打开c0s.obj文件,所以在这里我猜测c0s.obj文件也是我们最小环境中不可缺少的文件,在tc2.0文件中找到此文件,将其拷贝到我们的当前目录下,再次进行tcc a.c;
C:\c>tcc a.c
Turbo C Version 2.0 Copyright (c) 1987, 1988 Borland International
a.c:
Warning a.c 5: 'a' is assigned a value which is never used in function main
Turbo Link Version 2.0 Copyright (c) 1987, 1988 Borland International
emu.lib : unable to open file
"emu.lib : unable to open file"提示不能打开emu.lib文件,故我们将emu.lib文件也添加到我们的目录中来,再次进行tcc a.c
C:\c>tcc a.c
Turbo C Version 2.0 Copyright (c) 1987, 1988 Borland International
a.c:
Warning a.c 5: 'a' is assigned a value which is never used in function main
Turbo Link Version 2.0 Copyright (c) 1987, 1988 Borland International
maths.lib : unable to open file
"maths.lib : unable to open file"提示不能打开maths.lib文件,同样我们将其添加到我们的目录中来,进行tcc a.c查找下一个缺少的文件;
C:\c>tcc a.c
Turbo C Version 2.0 Copyright (c) 1987, 1988 Borland International
a.c:
Warning a.c 5: 'a' is assigned a value which is never used in function main
Turbo Link Version 2.0 Copyright (c) 1987, 1988 Borland International
cs.lib : unable to open file
"cs.lib : unable to open file"bu不能够打开cs.lib文件,将其添加进来,同样执行tcc a.c进行下一个文件的查找;
C:\c>tcc a.c
Turbo C Version 2.0 Copyright (c) 1987, 1988 Borland International
a.c:
Warning a.c 5: 'a' is assigned a value which is never used in function main
Turbo Link Version 2.0 Copyright (c) 1987, 1988 Borland International
通过上面的提示可知,没有了错误,已经生成了可执行的文件,输入a进行观察此文件是否可执行:
C:\c>a
hello world!
到这里我们先后已经找到了tlink.exe、c0s.obj、emu.lib、maths.lib、cs.lib共五个文件,此时我们的编译、连接的最小环境就已经搭建完好了,就可以进行下阶段的深一阶段的学习研究了。