简单的C语言编译环境

来源:互联网 发布:java一句话 编辑:程序博客网 时间:2024/06/05 20:54

(以下使用编译器tc2.0的一些文件)
一、基本编译:

(1)无库文件的编译:
将tcc.exe,tlink.exe放入文件夹cc。建立三个c语言源文件a.c,b.c,c.c。其中a.c的内容为
main()
{
    show(10,10,2,'a');
}
b.c的内容为
void show(int row,int col,char color,char ch)
{
    char far *p;p=((char far *)0xb8000000);
    p[row*160+col*2]=ch;p[row*160+col*2+1]=color;
}
c.c的内容为
f()
{
    main();
    asm mov ax,4c00h  //这是一个返回操作系统的命令。
    asm int 21h
}

用tcc -c a 命令编译a.c,用 tcc -c b 命令编译b.c,再把tasm.exe(将masm.exe改名也可以)放入文件夹,用tcc -c c 命令编译c.c。等a.obj,b.obj和c.obj都生成后,再用 tlink c a b,a,,命令生成可执行文件a.exe。

(2)有库文件的编译:
制作库文件:将tlib.exe放入文件夹,用 tlib cf命令生成cf.lib文件。再用 tlib cf +b 命令将b.obj加入cf.lib中。然后用 tlib cf,cf.lst命令生成列表文件,可以用edit或type命令查看cf.lst中的内容,即加入的obj文件。最后用 tlink c a,a,,cf命令生成可执行文件a.exe。

制作批处理:新建cc.bat文件,内容为以下语句:
@echo off
tcc -c %1
tlink c %1,%1,,cf
然后可用 cc a 命令生成可执行文件a.exe

二、简单的命令行编译环境

虽然c.c提供了返回操作系统的操作,但是另外的操作却实现不了,所以用c0s.obj代替c.obj。在使用 tlink c0s a,a,,cf命令连接目标文件时会提示缺少文件,分别是STKLEN,HEAPLEN,SETARGV,SETENVP,EXIT,MALLOC,ATEXIT,BRK,其中后两个文件没有直接出现,需要查找cs.lst得到。用命令 tlib cs.lib *stklen 将stklen文件从cs.lib中提取出来,和tlib cf.lib+stklen 把该文件加入到cf.lib中(可以制作成批处理)。再用 tlink c0s a,a,,cf 命令,就可以成功生成a.exe。

此时,a.c的最简编译环境已经完成,库文件中只包括编译所需的最少的目标文件,如需使用别的函数只要从库文件中提取即可。接着把最常用的printf函数加入到cf.lst中。命令为tlib cs.lib *printf 和tlib cf.lib+printf,当然还会缺少很多文件,需要一一加入到cf.lst中。完成后,就可以打印出程序中最常见的一句话:Hello world!。

到现在为止,一直使用批处理cc.bat编译C程序,把下面的代码在完整的C语言编译环境中编译,就可以用cc.exe来作为命令行编译工具。

虽然需要什么文件时,可以导入到cf中,不过用cs更方便一些。上面的程序还可以扩展,例如增加删除map文件的语句。

三、简单的集成开发环境

新建文件夹cc,放入tc.exe并运行,然后清空Options/Directories中的所有路径,用Saveoptions保存设置。编辑hello.c文件,main函数中只有一句话:printf("Hello world!");。用Compile中的 Compile to OBJ 编译,再用 Link EXE file进行连接,这时会提示找不到文件。将必须用到的所有文件放入文件夹,直到成功生成hello.exe。

原创粉丝点击