Turbo C 2.0编连命令tcc.exe的用法

Turbo C 2.0编连命令tcc.exe的用法 
 
      Turbo C 2.0编译连接程序TCC.EXE的用法简介

    ⒈首先要确保名为turboc.CFG的文件与TCC.EXE位于同一
      目录下如同在C:/TC目录下。turboc.CFG的全部内容是
      -IC:/TC/INCLUDE
      -LC:/TC/LIB
      它的作用是告诉TCC.EXE,.h文件和.lib文件在哪里。
    ⒉最简单的情形——当只需要编译连接一个C源文件
      设含主函数main()的文件名为mfile.c(下同)
      则用以下命令之一可使编译、连接"一步到位":
      ① tcc -f87 mfile.c <回车>
      ② tcc mfile.c <回车>
      ③ tcc mfile   <回车>
      命令①的效果优于命令②③因为 -f87 启动了协处理器
      从而使最终得到的可执行文件mfile.exe代码短,速度快
      命令②③的效果是用软件仿真协处理器的8087指令代码
      既长速度且慢。当然如果机器上没有协处理器就只能采
      用命令②或③了。若源文件的扩展名是c,则只须输入文
      件的主名,小数点和'c'一并省略,故命令②③效果相同
【注】如果C源文件的扩展名不是c,则又分两种情况:
      若无扩展名(例如:仅有主名mfile)则编译连接命令应为
         tcc -f87 mfile.    <回车>
      别忘了末尾那个小数点! 
      若有扩展名(例如:mfile.cpp)则编译连接命令应为
         tcc -f87 mfile.cpp <回车>
    ⒊较复杂的情形——数个C源文件编译后连接为一个程序
      设除了源文件mfile.c外,还有1.sub和2.fun两个源文件
      则此时"一步到位"的既编译又连接的命令如下:
         tcc [-f87]  mfile[.c]  1.sub  2.fun <回车>
      以上含方括号[]的项表示可选择项(下同)。该命令的效
      果是顺序编译这些C源文件因而先后生成以下目标文件
      mfile.obj,1.obj,2.obj 随后连接并生成 mfile.exe
      换言之以上命令的效果等价于下面所列命令序列的效果
         tcc  -c  mfile[.c]  <回车>
         tcc  -c  1.sub      <回车>
         tcc  -c  2.fun      <回车>
         tcc [-f87]  mfile.obj  1.obj  2.obj <回车>
      应当指出:-f87 开关对于编译不起作用,但在连接阶段
      将引导连接器TLINK.EXE与库文件 C:/TC/LIB/FP87.LIB
      连接而不是缺省时的模拟库文件 C:/TC/LIB/EMU.LIB。
    ⒋更复杂的情形——C主文件和汇编模块连接为一个程序
      设除源文件mfile.c外,还有汇编模块sub.asm和fun.asm
      此时"一步到位"的既编译、汇编又连接的命令如下:
         tcc [-f87] -B mfile[.c] sub.asm fun.asm <回车>
      以上命令的效果等价于下面所列命令序列的效果:
         tcc  -c  mfile[.c]  <回车>
         tasm -Mx sub[.asm]  <回车>
         tasm -Mx fun[.asm]  <回车>
         tcc [-f87]  mfile.obj  sub.obj  fun.obj <回车>
    ⒌内存模式——Tiny,Small,Compact,Medium,Lagre,Huge
      对应的开关是 -mt, -ms(缺省), -mc, -mm, -ml, -mh
      注意该开关对于编译和对于连接都是有意义的。例如:
         tcc  -ml mfile[.c]    <回车>
      等价于这样2条命令:
      ① tcc  -ml -c mfile[.c] <回车>
      ② tcc  -ml    mfile.obj <回车>
      命令①中的 -ml 告诉编译器:代码和数据都是"远"的。
      命令②中的 -ml 告诉连接器:连接MATHL.LIB和CL.LIB
    ⒍混合模式编程。例如:总体上是SMALL模式,但希望调用
      按LARGE模式编写的函数。这是可以做到的,关键在函数
      声明语句要强调代码和数据的 far 属性。 有这样一个
      具体例子。在MS-Fortran4.0的库LLIBFR7.LIB中有个名
      为CIXTOMX.OBJ的模块,其中定义了4个"远"函数。用C
      语言编程调用这4个函数的关键是正确的函数原型声明
extern void far fmsbintoieee(float  far*,float  far*);
extern void far dmsbintoieee(double far*,double far*);
extern void far fieeetomsbin(float  far*,float  far*);
extern void far dieeetomsbin(double far*,double far*);
      这样声明后,即使用 -ms 进行编译连接也能正常运行。
      完整的程序见 D:/FOR4.0/ 目录下的
      MS.C,CIXTOMX.OBJ,IXTOMX.OBJ,MS.EXE,ML.C,ML.EXE。
    ⒎连接阶段如何用TLINK.EXE完成。对于
      tcc -f87  mfile.obj  sub.obj  fun.obj <回车>
      在缺省的SMALL模式下也可以用以下命令实现连接:
TLINK c0S mfile sub fun,mfile,nul,maths fp87 cs <回车>
      同理对于
      tcc -ml  mfile.obj  sub.obj  fun.obj <回车>
      则相当于执行下列命令:
TLINK c0L mfile sub fun,mfile,nul,maths emu cs <回车>
      其中启动代码即C的初始化程序C0S.OBJ或C0L.OBJ可以
      在C:/TC/LIB/下找到,它们的源程序在C:/TC/STARTUP/
      目录下——该目录中的MAIN.C程序也值得关注。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值