在Turbo C2.0集成开发环境中和命令行状态下用tcc.exe中编译连接出来的可执行文件为什么大小不一样?

时间:2022-07-19 20:08:11
我自己写C文件早用VC6了,但是为了跟初学C的学生们讲清楚Editplus配置C的开发环境,今天还是做了一下实验。不料遇见了一些奇怪的问题,在此请教诸位高手:

直接进入TC20的集成开发环境,调出TC20自带的hello.c,编译运行。
得到的两个文件大小如下:
    HELLO.OBJ  475字节
    HELLO.EXE  9486字节

用cmd命令行自己编译,命令如下:
D:\dossoft\TC20>d:\dossoft\tc20\tcc.exe -Id:\dossoft\tc20\include -Ld:\dossoft\tc20\lib -nd:\ D:\dossoft\TC20\hello.c
得到的两个文件大小如下:
    HELLO.OBJ  328字节
    HELLO.EXE  6544字节

用editplus调用tcc.exe配置的开发环境,配置如下:
(1)菜单文本:compile
(2)命令:D:\dossoft\TC20\TCC.EXE
(3)参数:-ID:\dossoft\TC20\INCLUDE -LD:\dossoft\TC20\LIB -n$(FileDir)\ $(FilePath)
(4)起始目录:D:\dossoft\TC20
(5)捕获输出:选中此项
(6)运行时自动保存打开的文件:选中此项
得到的两个文件大小如下:
    HELLO.OBJ  328字节
    HELLO.EXE  6544字节
其实,用editplus配置的开发环境,本质上也是命令行编译。那么:

为什么在集成开发环境中编译连接出来的文件跟命令行状态下得到的文件大小不一致?

最好玩的是,我在命令行状态下执行上述几种方法编译出来的hello.exe,居然不能输出Hello, world
但是,在集成环境下alt+F5可以看到Hello, world,
      在editplus配置的环境中能够捕获到输出的Hello, world
为什么会有这种现象?

更让人哭笑不得的是,有时候系统突然变乖了:
在命令行状态下执行上述几种方法编译出来的hello.exe,居然能看到输出结果了。


请各位达人会诊一下:
我的XP系统是不是出毛病了?
还是我的TC20系统的某些文件出毛病了?
这种问题该怎么解决?
谢谢!

5 个解决方案

#1


是很怪,很久不用TC了
建议重装TC试试,
换到别人机器上试试!

#2


集成环境和命令行编译形成的可执行文件大小不一致,至少有2个原因:1是集成环境下,默认带Debug信息,而命令行默认是不带的(需要加-v);2是集成环境下,可能有默认的优化选项,而命令行默认是没有的。

#3


换到win2k平台,重新安装editplus,重新解压缩tc20,配置完一检测,还是这样。

我只有两台机子,全试过了。哪位仁兄能在自己的机器上简单配置一下,花两分钟时间帮我看看是不是有这样的现象。
谢谢!

#4


引用 3 楼 woshihuzi 的回复:
换到win2k平台,重新安装editplus,重新解压缩tc20,配置完一检测,还是这样。 
  
 我只有两台机子,全试过了。哪位仁兄能在自己的机器上简单配置一下,花两分钟时间帮我看看是不是有这样的现象。 
 谢谢!

我直接在命令行下编译运行 可以正常看到hello,world

#5


k2eats兄,你编译出来的hello.exe多少字节?

#1


是很怪,很久不用TC了
建议重装TC试试,
换到别人机器上试试!

#2


集成环境和命令行编译形成的可执行文件大小不一致,至少有2个原因:1是集成环境下,默认带Debug信息,而命令行默认是不带的(需要加-v);2是集成环境下,可能有默认的优化选项,而命令行默认是没有的。

#3


换到win2k平台,重新安装editplus,重新解压缩tc20,配置完一检测,还是这样。

我只有两台机子,全试过了。哪位仁兄能在自己的机器上简单配置一下,花两分钟时间帮我看看是不是有这样的现象。
谢谢!

#4


引用 3 楼 woshihuzi 的回复:
换到win2k平台,重新安装editplus,重新解压缩tc20,配置完一检测,还是这样。 
  
 我只有两台机子,全试过了。哪位仁兄能在自己的机器上简单配置一下,花两分钟时间帮我看看是不是有这样的现象。 
 谢谢!

我直接在命令行下编译运行 可以正常看到hello,world

#5


k2eats兄,你编译出来的hello.exe多少字节?