配置TC2.0运行环境
一、 学习过程
下载TC2.0并打开如图:
这是一个集成的C语言环境包,包括TC、dosbox和一些编译工具,很明显这样我无法判断单个程序的功能,也无法区分哪些程序是必须的。
那么为了搞清楚哪些文件是用来解决哪些功能的,我新建一个文件夹C:\minic用来存放已知要解决问题的文件。
避免程序通过设置搜索路径的方法找到不在相同目录的相关文件有两种方法:(1)不让设置的默认路径指向真的包含相关文件的目录。(2)把我们所要研究的系统的所有文件都拷贝到一个不可能是系统设置的搜索路径的目录中。
对于第一种方法,首先要搞清楚程序是怎么设置默认搜索路径的,我想起了在配置java环境时需要在系统环境变量里添加相关路径,这样程序在使用时才会根据这个路径找到安装的jdk,那么我们这里的程序安装时是自动添加环境变量吗?如果是这样,那么只要改变环境变量即可避免查找,但我们不知道在程序查找时是哪个环境变量起了作用。在网上的一篇资料《头文件的查找方式和库的搜索路径》里面有这样一句话:“预设的头文件目录是由编译器自己决定的”,那么也可以通过新建文件夹的方式避免查找。如果不是只通过特定路径查找固定文件而是大范围查找的话,那么就要搞清楚这个搜索的范围是多少,是搜索该文件夹下的子目录,还是搜索所有同级目录,还是搜索整个盘符的文件,还是搜索系统内的所有文件。于是就可以用方法二新建一个文件夹使它不在搜索范围内,课本上新建了D:\tc2.0文件夹,说明这个文件夹不在搜索范围内,但是我的xp虚拟机里只有一个C盘,于是我决定新建C:\tc文件夹看看,如果这个文件夹在搜索路径内的话,实验结果会与资料上不一样。创建结果如图:
把tc.exe拷贝到c:\minic并运行如图:
说明TC没有找到所需的文件,该文件夹果然不在搜索范围内。按确定后发现文件夹中出现了两个新的文件:
将tc的工作路径都清空:
编写simple.c并保存到c:\minic下:
用complie编译显示成功:
在c:\minic\PROJECT中创建了simple.obj:
用tc连接simple.obj显示错误:
原因是:unable to open input file ‘COS.OBJ’:
在C:\minic下没有simple.exe
那么我们就在原目录下找到COS.OBJ放进去,结果出现了下一个错误:
再找到EMU.LIB放进去,结果出现下一个错误:
再找到MATHS.LIB放进去,结果出现下一个错误:
再找到GRAPHICS.LIB放进去,结果出现下一个错误:
再找到CS.LIB放进去,终于成功生成了simple.exe文件:
可知TC连接一个OBJ文件所需的文件是:COS.OBJ、EMU.LIB、MATHS.LIB、GRAPHICS.LIB、CS.LIB。
二、 解决的问题
(1) java等程序是怎么查找jdk等相关文件的?答:通过系统或用户的环境变量里的路径查找。
(2) TC连接obj文件所需文件都有哪些?答:TC连接一个OBJ文件所需的文件是:COS.OBJ、EMU.LIB、MATHS.LIB、GRAPHICS.LIB、CS.LIB。
三、 未解决的问题
(1) TC程序是怎么设置默认搜索路径查找相关文件的?
(2) 为什么TC程序编译c文件不需要其他文件?
(3) TC连接obj文件的过程是什么?相关文件的功能都是什么?
四、 学习感想
我们在面对复杂和未知的事物时,要学会以简单有效的方式来分析。要在TC程序的原目录里找出C语言编译连接所必须的文件是很困难的。那么我们不妨换一种思路,TC主程序肯定是必须的,我们把主程序和外部的联系关闭,再编译运行文件,根据错误提示找出所需的文件。如果最后连接成功,那么我们找到的文件肯定就是必须的文件。这个思路在编程中很常见,我们把别人的程序拿来看,如果一个文件一个文件地看代码来搞清楚功能,那么又费时间又费精力,但是如果从功能实现的角度,我只搞清楚我要实现功能的那部分代码,甚至我只要清楚这个文件的功能和接口,甚至我只要知道这个程序是工程实现所必须的,就已经足够了。有句说佛家的三个境界:第一个是“看山是山,看水是水”;第二个是“看山不是山,看水不是水”;第三个是“看山还是山,看水还是水”。把简单的事物看复杂是要注重每一个细节,把复杂的事物看简单是注重效率,我们在做事情的时候要合理选择做事的方式才能事半功倍,实现最大的价值。
配置TC2.0运行环境的更多相关文章
- VScode配置CMD本地运行环境(2.0)
VScode配置CMD本地运行环境(2.0) 官方Task.json说明 完整的Task.json配置信息 Task.json预定义变量 看了很多网上的教程都说需要下载VScode的python插件, ...
- 配置perl-cgi的运行环境,由于Active Perl安装在d:\perl
Apache 1.3.22 for Win32+PHP 4.0.6+Active Perl 5.006001+Zend Optimizer v1.1.0+mod_gzip 1.3.19.1a+MySQ ...
- 在VS2017(VC15)上配置opencv4.0.1环境
在VS2017(VC15)上配置opencv4.0.1环境 转 https://blog.csdn.net/GoldenBullet/article/details/86016921 作为萌新最初 ...
- vsCode怎么为一个前端项目配置ts的运行环境
vsCode为一个前端项目配置ts的运行环境,ts文件保存的时候自动编译成js文件: 假设此前端项目名称为Web:文件结构如图 1. 在根目录中新建一个“.vscode”文件夹,里面建一个“tasks ...
- AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习(二):配置WinClient分布式运行环境
一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...
- Spark2.1.0——运行环境准备
学习一个工具的最好途径,就是使用它.这就好比<极品飞车>玩得好的同学,未必真的会开车,要学习车的驾驶技能,就必须用手触摸方向盘.用脚感受刹车与油门的力道.在IT领域,在深入了解一个系统的原 ...
- 腾讯云极速配置NodeJS+LNMP运行环境
版权声明:本文由吴逸翔原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/848754001487150669 来源:腾云阁 h ...
- mac 安装nginx,并配置nginx的运行环境
1. 安装nginx // 查询有没有nginx brew search nginx //开始安装nignx brew install nginx 2. 检查nignx是否安装成功 nginx -V ...
- [IOT] - 在树莓派的 Raspbian 系统中安装 .Net Core 3.0 运行环境
之前在 Docker 中配置过 .Net Core 运行环境,地址:[IOT] - Raspberry Pi 4 Model B 系统初始化,Docker CE + .Net Core 开发环境配置 ...
随机推荐
- 黑马程序员_JavaIO流(一)
IO(Input Output)流 概述: IO流(数据流)用来处理设备之间的数据传输. Java对数据的操作是通过流的方式. Java用于操作流的对象都在IO包中. 流按操作数据分为两种:字节流与字 ...
- 【8】JAVA---地址App小软件(AddrDaoFile .class)(数据层)
实现数据进行文件的存储和读写. 本软件也就到此结束了. 没多少可以讲的. 因为这个小软件也就8个类,主要学习的也就是一个分层思想的简单应用. package cn.hncu.addr.dao; imp ...
- Wix - 教程
1. 不错的教程 http://www.merlinia.com/mdt/WiXTutorial4.msl 2.
- Ajax解析
1.Ajax Asynchronous(异步的) javascript and xml 技术组成: CSS + xml +JavaScript +DOM Ajax核心对象: XmlHttpReques ...
- solr全文检索基本原理
场景:小时候我们都使用过新华字典,妈妈叫你翻开第38页,找到“坑爹”所在的位置,此时你会怎么查呢?毫无疑问,你的眼睛会从38页的第一个字开始从头至尾地扫描,直到找到“坑爹”二字为止.这种搜索方法叫做顺 ...
- SEO名词_黒帽SEO
一.什么是黒帽SEO 黑帽SEO是指通过一些操控和欺骗找寻搜索引擎漏洞的一些技术,让关键词排名在很短的时间获得非常好的排名的一项技术 二.黒帽SEO的危害 如果被搜索引擎识别网站采用的是黑帽SEO手段 ...
- C++基础学习笔记----第十三课(操作符重载-下)
本节主要讲使用成员函数重载操作符,包括[],=,(),->四种操作符的重载以及&&和||的问题. 类的成员函数进行操作符重载 基本概念 类的成员函数也可以进行操作符的重载.类的普 ...
- 关于ionic的一些坑(1)
既然来了,总要留下点什么证明自己来过不是,今天就扒一扒自己在ionic上面遇到的坑,因为在项目中2还没出来,所以现在所遇到的都是1中的,关于2的,待老夫以后详细摸索之后在与君细细道来. 1.ionic ...
- VB.NET入门基础
众所周知,Visual Basic.NET是由Visual Basic发展而来,这两者之间的升级使得Visual Basic语言发生了革命性的变革,使得由基于对象编程的Visual Basic过渡到了 ...
- sed删除空行和注释行
最近在看前辈们写的代码,他们把没有用的代码是注释掉而不是删掉.没用的代码和注释很乱,看着心烦,就把注释删掉来解读,顿时爽快多了. 不多说了,直接举例子 比如一个文本文件 data 里的内弄为 cat ...