C語言綜合研究與高強度程序設計訓練 1

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是集編輯連接,調試,運行等一系列的開發環境.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章