C语言综合研究与高强度程序设计训练 1

来源:互联网 发布:2017年十大网络红歌 编辑:程序博客网 时间:2024/04/28 00:02

C语言综合研究与高强度程序设计训练 1

C盘建立一个文件夹,命名为c,Tc 2.0 中的tcc.exe,tlink.exe,c0s.obj,cs.lib,emu.lib,maths.lib拷入到c文件夹中;

在环境的搭配中,我们可以通过运行来得知缺少的文件,也可以通过运行文件的帮助文档来获取帮助!

obj就是目标文件,是源程序经过编译程序编译后生成的,它不能直接执行,需要连接程序连接后才能生成可执行文件。这种目标文件一般是由机器代码组成的,但也有例外,可以是自己定义的一些伪指令代码,但这样还需有专门的解释程序对其进行解释执行,连接程序是把目标代码和它所使用的库文件连接的程序。

LIB有两种,一种是静态库,比如C-Runtime库,这种LIB中有函数的实现代码,一般用在静态连编上,它是将LIB中的代码加入目标模块(EXE或者DLL)文件中,所以链接好了之后,LIB文件就没有用了。一种LIB是和DLL配合使用的,里面没有代码,代码在DLL中,这种LIB是用在静态调用DLL上的,所以起的作用也是链接中用,链接完成了,LIB也没用了。至于动态调用DLL的话,根本用不上LIB文件。 目标模块(EXE或者DLL)文件生成之后,就用不着LIB文件了。

Tcc.exe为编译器,其帮助文件如下:



 

编写a.c文件;

Main()

{

  Printf(“hello world!\n”);

}

 

保存后,可以直接用 tcc a.c 直接编译链接成为可执行文件.



运行后可以看到结果如下:




 

可以通过打印出DS,SS,CS的数值可以看出DS,SS为一个同一个地址,CS为另一个地址,由此可知代码段为一个段,栈段和数据段为一个段;

代码如下:

main()

{

  printf("CS: %x\nDS:  %x\nSS: %x\n",_CS,_DS,_SS);

  printf("hello world!\n");

}

运行后结果


通过编译源文件生成obj文件,这文件与一系列的obj文件和lib库文件生成了可执行文件,也就是计算机可执行的二进制代码:



 

 

从而使得计算机可以运行在机器上!

 

Turbo c包有两种编译器,集成开发环境下的叫做TC.EXE和命令行方式的叫做TCC.EXE. 集成开发环境包括:集成编辑器、命令行编译器、连接器、调试器。

使用tc 2.0 可以搭建一个精简的开发环境,能够是我们更加容易了解c语言的底层特性以及一个程序从编写到编译所需要的文件.

 

在完成的工作中强调自己是为了思考,为什么要这样做,为什么是这样的,自己是怎么理解的,遇到的问题是怎样解决的,为什么要这样解决.

在第一次的研究中,tlink a.obj出现了错误,后来才发现,tlinktcc自动调用的,那么如果自己单独调用需要怎么使用呢,经过查阅一系列的文件后,明白了tlink连接时除了源文件生成的obj文件为,还需要  c0s,obj cs.lib文件,需要将这些文件一起连接才能生成可执行文件!

tlink.exe: 为连接程序,把各个obj文件连接程exe文件,把代码(也是obj文件,负责设置环境,调用main函数,等作用)main函数所在objmain函数所用到的obj连接起来生成exe文件。

tlink 使用的语法是:Syntax: TLINK objfiles, exefile, mapfile, libfiles 





 

Tcc.exe生成的exe文件是在命令行模式下生成的,而tc.exe具有图形界面.,tcc是一个编译器,编译时会生成可执行文件.tc.exe是集编辑连接,调试,运行等一系列的开发环境.

0 0
原创粉丝点击