C语言最简开发环境(续一)
来源:互联网 发布:2016网络神曲排行榜 编辑:程序博客网 时间:2024/04/27 05:17
一、引言
续上篇文章《C语言最简开发环境》,里面主要简单讲了最简环境主要的探究过程,以及探究留下的好多疑问。这章我们继续上一章《C语言最简开发环境》的问题,继续探究学习。二、编译、链接过程
续上次的探究,在minc文件夹中依照先后顺序加入的文件有:TCC.EXE、a.c、C0S.OBJ、EMU.LIB、MATHS.LIB、CS.LIB文件。那么这些文件是不是都需要呢?如果需要,那么中应该知道为什么用吧。为了详细的深入了解其中的原来,尽可能排除干扰,将minc文件夹中的其他几个文件去掉,只留下TCC.EXE和源文件a.c,minc文件夹如下图示:
并且将a.c源文件简化如下:
然后用命令>tcc a.c 进行编译,依然会报错提示需要:tlink.exe文件,但是除此之外,我们还发现了minc文件夹中生成了两个文件:a.obj和TURBOC.$LN文件,如下图示:
如果心细,不难发现TURBOC.$LN文件中有一些线索,打开TURBOC.$LN文件,我们看到如下内容:
在根据报错的信息:如下图示:
大概猜到:TCC.EXE对a.c的编译过程包括连接,需要tlink.exe连接器把c0s.obj、EMU.LIB、MATHS.LIB、CS.LIB连接起来。也就是说命令tcc a.c的执行包括了编译、连接、生成可执行文件的过程。从TURBOC.$LN文件文件中的内容可以看出,此过程是有一定的先后顺序的。那么是谁先谁后呢?是先有了a.obj还是TURBOC.$LN文件?
TURBOC.$LN 文件名有什么含义?查一下才知道,如下:
文件名仅仅是公司名称而已,其中没有我们利用的信息。所以只能从文件内容入手。
我的猜想是:a.obj的生成不依赖EMU.LIB、MATHS.LIB、CS.LIB包括TURBOC.$LN文件,且TURBOC.$LN文件只是一个中间过程文件而已,编译连接完毕就删除掉了。
那么TURBOC.$LN是有用的吗?还是只是起到提示说明而已呢?如果是提示,那么其中的内容的真实意思是啥?不难读懂:
c0s.obj+
a
a
/c/x
EMU.LIB+
maths.lib+
cs.lib
其中连起来看:c0s.obj + a a /c/x EMU.LIB+ maths.lib+ cs.lib 是不是命令?
如果是命令,那么我们可以不用c0s.obj、EMU.LIB、 maths.lib、cs.lib这四个文件吗?
上篇《C语言最简开发环境》留下的一个问题,printf函数从哪里来,到这里好像还不能解释printf从哪里来,虽然在a.c源文件里已经去掉了printf函数,但是这几个文件还是需要吗?
- C语言最简开发环境(续一)
- C语言最简开发环境
- C语言开发工具(开发环境)
- C语言开发环境
- C语言开发环境
- Windows下C语言开发环境配置(一):MinGW的简介和安装
- C语言开发总结(一)
- DSP开发-C语言环境
- C语言开发环境搭建
- cygwin环境c语言开发
- C语言开发环境搭建
- Ueditor(一):最简环境搭建
- Linux 环境下C语言编程(一)
- 易语言集成开发环境使用简明教程(一)
- GO语言初探(一) 开发环境配置及测试 .
- Java 语言概述与开发环境(一)
- linux下c语言的开发环境(1)
- ARM裸机程序开发(十):C语言环境初始化
- IDEA的入门使用(二)——插件
- SDUT 3769 分割 超大数据加一位数 比较大小
- Flume-ng源码解析之Channel组件
- 在maven项目移植时,Maven Dependencies不见了!!!
- 设计模式——Java动态代理
- C语言最简开发环境(续一)
- Scrolview 嵌套ListView 导致ListView条目不能展开的问题及原理详解
- 屏幕色温
- 【Coursera】编程题 Collinear Points
- java 文件读取
- 技术积累
- Redis使用详解之redhat系统上安装redis-3.2.8
- HDU 3047 Zjnu Stadium(带权并查集)
- leetcode解题之121 # Best Time to Buy and Sell Stock