研究C语言的新型编译环境TCC

C语言综合研究1

搭建一个tcc环境

研究过程:

问题引出:为什么要使用tcc环境,甚至连图形界面都没有,为什么要使用这样的化境?

按照我们学习的本质来讲,可能是为了体验C语言底层的相关特性,但是在研究1中尚不能体会这点,所以这个问题待后续回答

我们将相关文件放到DOS环境下的C盘中去,用记事本书写一个简单的c程序。

使用c:\c\tcc a.c命令打算对.c文件进行编译。

发现,提示错误:不能找到a.c文件。

那么应该是无法识别路径,或者是相关的问题?那么推测是,难道tcc  环境在工作的时候需要一个索引路径的文件支持?

随即我们使用了诸如 minic\tc c\a.c.发现可以找到a,c文件并打开它,于是得出结论,路径问题并不由tcc来决定,而是由操作系统DOS决定。虽然考虑到这一点,但是仍不知道怎么做,于是百度

最终知道应该 用 cd c\命令使目录更改为C:\C>

这样顺利的编译连接生成a.exe文件。

但是仍不知道这样做的原因是是什么 为什么tc的时候就没有这个问题。

之后处于好奇心,将tlink.exe删除,发现只能能够生成.obj文件,但是不能生成.exe文件,如果不删除tlink.exe发现可以直接生成.exe文件,这说明了tcc.exe程序有调用tlink.exe程序的作用,而其本身能够实现编译功能。

又做了如下尝试,算是对之前研究的回忆,在tlink.exe删除后,删除了其他必要文件,发现仍让能够生成.obj文件,说明这些文件在编译阶段不是必须的,而这个再次说明了什么是:连接!

做完这些工作,运行生成的.exe文件,显示了“hello world!”。

已解决:

1.通过这个研究做到了最基本的事情,搭建一个tcc环境并对.c文件进行编译连接生成.exe文件。

2.认识到了tcc负责生成.obj文件,tlink负责生成.exe文件,但tcc会调用tlink 文件。

3.对之前的研究进行回顾,进一步认识了“编译”,“连接”这个概念

未解决:

1.tcc甚至连图形界面都没有,我们为什么使用tcc?

2.教材所说的有两个最大64K的段,试问如何验证?以及,这个是什么意思?

感悟:

通过建立tcc环境,实现了对.c文件的编译连接,总体来说tcc比tc少了很多文件,这对于我们研究c语言是极其有帮助的,可以让我们抓住一些更为核心的东西,而忽略那些目前阶段不需要了解的东西。

时间: 2024-10-26 21:15:55

研究C语言的新型编译环境TCC的相关文章

Lua语言教程0 ——编译环境搭建

NotePad++ 搭建教程:http://tieba.baidu.com/p/4029642660(含有运行命令符) LuaStudio 还可以:http://www.crsky.com/soft/41683.html#down 经测试编译器貌似有时候抽风! 可以转成unix,mac,windows模式:也可以选择代码窗口风格! eclipse+ldt: 不建议:ldt下载地址:http://www.eclipse.org/downloads/download.php?file=/ldt/pr

sublime text2建成C语言(C++)编译环境

四个步骤: 下载安装Sublime text2 for windows 下载安装 MinGW 与 系统变量设置 Sublime Building System 设置 编译测试 一.下载安装Sublime text2 for windows 下载地址:http://www.sublimetext.com/ 二.下载安装 MinGW 与系统变量设置   本文使用的C/C++编译器是gcc/g++,所以需要下载安装MinGW(下载地址:http://sourceforge.net/projects/m

Mac下SublimeText 3配置C语言编译环境

1. SublimeText简述 Sublime Text是由程序员Jon Skinner于2008年1月份所开发出来,它最初被设计为一个具有丰富扩展功能的Vim.一款文本编译器怎么才能满足大部分程序员的需求呢? 首先,它得是跨平台的,linux,win,mac都可以用,每个平台上的软件都很好用也很关键: 其次功能强大(插件丰富),占用内存小,界面友好,比如编辑状态退出会自动保存,下次打开方便编译: 还有就是方便提交ftp, svn, git,查看本地文件历史纪录: 以上三个优点SublimeT

在安卓手机上学习C语言 - 安卓手机C/C++编译环境的搭建 : 程序世界的创建

   在安卓手机上学习C语言           安卓手机C/C++编译环境的搭建 : 程序世界的创建 在电脑上运行的QQ,手机上的QQ都是程序, 这些通电就能用的神奇玩意, 如果我说它们都是程序员用一个一个英文字母,数字,奇奇怪怪的符号创造出来的,我想那些没有任何概念的朋友可能会感到惊讶. 是的, 在没有揭开程序世界的神秘面纱之前, 一切都是那么神奇. 实际上, 程序确实是用一个一个英文字母(或者说拼音字母...)来写出来的, 就和写小说一样写出来的. 但是并不是写完之后把写出来的内容保存到一

【Go】windows下搭建go语言编译环境

主要是协助杨哥做Kubernetes相关工作,由于Kubernetes和Docker都是由Go语言编写,因此改源码后还是需要go语言编译器来编译运行.所以打算先在windows上安装一下go语言环境. 需要的工具: GCC编译器 http://gcc.gnu.org/index.html Golang编译器 https://golang.org/ liteide IDE :https://sourceforge.net/projects/liteide/ 接下来就是把对应的安装包给下下来然后安装

深入研究C语言 第一篇(续)

没有读过第一篇的读者,可以点击这里,阅读深入研究C语言的第一篇. 问题一:如何打印变量的地址? 我们用取地址符&,可以取到变量的偏移地址,用DS可以取到变量的段地址. 1.全局变量: 我们看到,这里的全局变量是在数据段中的. 2.局部变量: 我们看到,这里的局部变量是在栈段中的. 问题二:研究main函数的偏移地址与源代码中main函数的定义位置之间的关系. 我们打印函数的偏移地址,在打印的过程中我们可以发现: 当程序编码如下时,程序运行的结果是: 而将程序的f1函数和f3函数互换,程序运行的结

深入研究C语言 第一篇

一. 研究过程 1.第一章:创建编译环境: 我们首先下载TC2.0,找到其中与编译连接相关的程序和文件: (1) 编译器:TCC.exe (2) 连接器:tllike.exe (3) 相关文件:c0s.obj.cs.lib.emu.lib.maths.lib 将文件放在C:\C目录下. 编写程序测试我们的编译环境: 在这里我们看到,程序被正常的编译.生成了.exe文件.并且可以正确执行. 当然,在TC中,c0s.obj.cs.lib.emu.lib.maths.lib这四个文件时在TC目录下的l

jenkins+gitlab构建安卓自动编译环境

因工作关系接触到接触到安卓自动编译环境,网上的资料都推荐了jenkins,因为第一次接触安卓和jenkins,踩了不少的坑,有总结才有进步. gitlab环境之前已经安装完成可用,具体步骤另外详解吧.本例目标是在gitlab可用前提下,通过jenkins将git仓库的代码自行编译打包,生成可用的apk安装文件. 一.相关环境 1 Linux Centos6.3 2.6.32-279.el6.x86_64 各相关软件版本 1     JDK 1.8.0    Gradle 2.13    SDK 

C语言文件的编译到执行的四个阶段

C语言文件的编译与执行的四个阶段并分别描述 C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接.编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程.链接是把目标文件.操作系统的启动代码和用到的库文件进行组织形成最终生成可执行代码的过程. 第一个阶段: 是预处理阶段,在正式的编译阶段之前进行.预处理阶段将根据已放置在文件中的预处理指令来修改源文件的内容.如#include指令就是一个预处理指令,它把头文件的内容添加到.cpp