我已经很久没有真正尝试使用 Turbo-C 来做这种事情了。如果您在命令行上分别使用 TCC.EXE 和 TLINK.EXE 编译和链接,那么这可能对您有用。
要编译并链接到 COM 文件,您可以为每个 C 源文件执行此操作,为每个文件创建一个 OBJ 文件:
tcc -IF:\TURBOC3\INCLUDE -c -mt file1.c
tcc -IF:\TURBOC3\INCLUDE -c -mt file2.c
tcc -IF:\TURBOC3\INCLUDE -c -mt file3.c
tlink -t -LF:\TURBOC3\LIB c0t.obj file1.obj file2.obj file3.obj,myprog.com,myprog.map,cs.lib
每个 C 文件都使用-mt(微型内存模型)单独编译为相应的 OBJ 文件。 -I 选项指定环境中 INCLUDE 目录的路径(相应更改)。 -c 选项告诉 TCC 只编译成 OBJ 文件。
当链接 -t 告诉链接器生成一个 COM 程序(而不是 EXE)时,-LF:\TURBOC3\LIB 是您环境中库目录的路径(相应地更改)。 C0T.OBJ 是微型内存模型的 C 运行时文件。这包括您缺少的主要入口点。然后列出所有其他 OBJ 文件,用空格分隔。第一个逗号之后是输出文件名。如果使用-t 选项,则使用 COM 扩展名命名程序。第二个逗号之后是 MAP 文件名(如果您不想要 MAP 文件,可以将文件名留空)。第三个逗号之后是由空格分隔的库列表。对于要使用小型模型库的微型模型。用于小内存模型的 C 库称为 CS.LIB。
例如,如果我们有一个名为 TEST.C 的源文件,它看起来像:
#include<stdio.h>
int main()
{
printf("Hello, world!\n");
return 0;
}
如果我们想编译和链接它,命令是:
tcc -IF:\TURBOC3\INCLUDE -c -mt test.c
tlink -t -LF:\TURBOC3\LIB c0t.obj test.obj,test.com,test.map,cs.lib
您必须为自己的环境使用路径。这些命令应生成一个名为 TEST.COM 的程序。运行时应打印:
你好,世界!