我已经很长时间没有真正尝试使用 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
Each 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 的程序。运行时应该打印:
你好世界!