自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

初探Unix操作系統(tǒng)目標文件

系統(tǒng) 其他OS
在文章中,我們會帶大家以前對Unix操作系統(tǒng)目標文件進行初探。在 Unix操作系統(tǒng)® 和 Linux® 中,任何事物都是文件。

在我們使用Unix操作系統(tǒng)的開始階段,我們也許對Unix操作系統(tǒng)不敢嘗試更好的方法,因為我們不知道該怎么使用,今天我們就來對Unix操作系統(tǒng)目標文件進行初探。

Unix操作系統(tǒng)中運行的程序遵守一種稱為目標文件格式的精心設(shè)計。了解更多關(guān)于目標文件格式的內(nèi)容,以及可以用來研究系統(tǒng)中目標文件的工具。
  
計算機編程的***技術(shù)將一種特殊的人性與一組特殊的工具結(jié)合在一起,用以生產(chǎn)出對其他人非常有幫助的一種神奇的產(chǎn)品,即軟件。計算機程序員是一群注重細節(jié)的人,他們可以處理計算機中各種各樣的困難。計算機的要求非??量?,并且不能容忍其中存在任何的偏差。毫無疑問,無論您的個性如何以及在工作中使用了何種輔助工具,計算機程序的編寫都是非常困難的。

在 Unix操作系統(tǒng)® 和 Linux® 中,任何事物都是文件。您可以認為,Unix操作系統(tǒng) 和 Linux 編程實際上是編寫處理各種文件的代碼。系統(tǒng)由許多類型的文件組成,但目標文件具有一種特殊的設(shè)計,提供了靈活和多樣的用途。

目標文件是包含帶有附加地址和值的助記符號的路線圖。這些符號可以用來對各種代碼段和數(shù)據(jù)段進行命名,包括經(jīng)過初始化的和未初始化的。它們也可以用來定位嵌入的調(diào)試信息,就像語義 Web,非常適合由程序進行閱讀。

Unix操作系統(tǒng)行業(yè)工具

計算機編程中使用的工具包括代碼編輯器,如 vi 或 Emacs,您可以使用這些工具輸入和編輯希望計算機在完成所需任務(wù)時執(zhí)行的指令,以及編譯器和連接器,它們可以生成真正實現(xiàn)這些目標的機器代碼。

高級的工具,稱為集成調(diào)試環(huán)境 (IDE),它以統(tǒng)一的外觀集成了不同工具的功能。IDE 使得編輯器、編譯器、連接器和調(diào)試器之間的界限變得很模糊。因此,為了更深入地研究和了解系統(tǒng),在使用集成的套件之前,***先單獨地使用這些工具。(注意:IDE 也通常被稱為集成開發(fā)環(huán)境。)

編譯器可以將您在代碼編輯器中創(chuàng)建的文本轉(zhuǎn)換為目標文件。最初,目標文件被稱為代碼的中間表示形式,因為它用作連接編輯器(即連接器)的輸入,而連接編輯器最終完成整個任務(wù)并生成可執(zhí)行的程序作為輸出。

從代碼到可執(zhí)行代碼的轉(zhuǎn)換過程經(jīng)過了良好的定義并實現(xiàn)了自動化,而目標文件是這個鏈中有機的連接性環(huán)節(jié)。在這個轉(zhuǎn)換過程中,目標文件作為連接編輯器所使用的映象,使得它們能夠解析各種符號并將不同的代碼和數(shù)據(jù)段連接在一起形成統(tǒng)一的整體。

歷史

計算機編程領(lǐng)域中存在許多著名的目標文件格式。DOS 系列包括 COM、OBJ 和 EXE 格式。Unix操作系統(tǒng) 和 Linux 使用 a.out、COFF 和 ELF。Microsoft® Windows® 使用可移植的執(zhí)行文件 (PE) 格式,而 Macintosh 使用 PEF、Mach-O 和其他文件格式。

最初,各種類型的計算機具有自己獨特的目標文件格式,但隨著Unix操作系統(tǒng)和其他在不同硬件平臺上提供可移植性的操作系統(tǒng)的出現(xiàn),一些常用的文件格式上升為通用的標準。其中包括 a.out、COFF 和 ELF 格式。

要了解目標文件,需要一組可以讀取目標文件中不同部分并以更易于讀取的格式顯示這些內(nèi)容的工具。本文將討論這些工具中比較重要的方面。但首先,您必須創(chuàng)建一個工作臺,并在其中建立一個研究對象。

工作臺

啟動一個 xterm 會話,讓我們先創(chuàng)建一個空白的工作臺,并開始對目標文件進行研究。下面的命令創(chuàng)建了一個目錄,可以將目標文件放到該目錄中進行研究:
 

  1. cd  
  2. mkdir src  
  3. cd src  
  4. mkdir hw  
  5. cd hw  

然后,使用您最喜歡的代碼編輯器,在 $HOME/src/hw 目錄中輸入清單 1 中的程序,并命名為 hw.c。

清單 1. hw.c 程序
 
 

  1. #include <stdio.h> 
  2. int main(void)  
  3. {  printf("Hello World!\n");  
  4. return 0;} 


 
要使用Unix操作系統(tǒng) 工具庫中提供的各種工具,可以將這個簡單的“Hello World”程序作為研究的對象。您將學(xué)習(xí)構(gòu)建和查看目標文件的輸出,而不是使用任何快捷方法直接創(chuàng)建可執(zhí)行文件(的確有許多這樣的快捷方法)。

文件格式

C 編譯器的正常輸出是用于您所指定的目標處理器的匯編代碼。匯編代碼是匯編器的輸入,在缺省情況下,匯編器將生成所有目標文件的祖先,即 a.out 文件。這個名稱本身表示匯編輸出 (Assembler Output)。要創(chuàng)建 a.out 文件,可以在 xterm 窗口中輸入下面的命令:cc hw.c
 
注意:如果出現(xiàn)了任何錯誤或者沒有創(chuàng)建 a.out 文件,那么您可能需要檢查自己的系統(tǒng)或源文件 (hw.c),以找出其中的錯誤。還需要檢查是否已將 cc 定義為運行您的 C/C++ 編譯器。

***的 C 編譯器將編譯和匯編步驟組合成一個步驟。您可以指定不同開關(guān)選項以查看 C 編譯器的匯編輸出。通過輸入下面的命令,您可以看到 C 編譯器的匯編輸出:cc -S hw.c
 
這個命令生成了一個新的文件 hw.s,其中包含您通常無法看到的匯編輸入文本,因為編譯器在缺省情況下將生成 a.out 文件。正如所預(yù)期的,Unix操作系統(tǒng)匯編程序可以對這種輸入文件進行匯編,以生成 a.out 文件。

希望以上的關(guān)于Unix操作系統(tǒng)的知識對大家有所幫助。

【編輯推薦】

  1. 解析Unix操作系統(tǒng)變種SCO UnixWare
  2. 10個程序來考驗Unix操作系統(tǒng)
  3. 變成Unix操作系統(tǒng)高手
  4. 快速學(xué)習(xí)Unix操作系統(tǒng)
  5. 關(guān)于Unix操作系統(tǒng)問題
責任編輯:小霞
相關(guān)推薦

2010-04-16 17:49:28

Unix操作系統(tǒng)

2010-04-09 15:34:41

Unix操作系統(tǒng)

2010-04-16 17:58:22

Unix操作系統(tǒng)

2010-04-16 17:46:26

Unix操作系統(tǒng)

2010-04-15 10:53:20

2010-04-08 15:58:24

Unix操作系統(tǒng)

2010-04-15 16:24:10

Unix操作系統(tǒng)

2010-04-30 17:21:50

Unix操作系統(tǒng)

2010-04-16 17:28:37

2010-04-13 12:27:44

Unix操作系統(tǒng)

2010-04-20 14:10:11

Unix操作系統(tǒng)

2010-04-15 14:40:26

Unix操作系統(tǒng)

2010-04-08 16:18:22

Unix操作系統(tǒng)工具

2010-04-19 18:18:30

Unix操作系統(tǒng)

2010-04-09 11:24:38

Unix操作系統(tǒng)

2010-04-08 17:56:42

Unix操作系統(tǒng)

2010-04-19 16:57:09

Unix操作系統(tǒng)

2010-04-19 10:54:33

Unix操作系統(tǒng)

2010-04-14 13:59:45

Unix操作系統(tǒng)

2010-04-08 15:21:39

Unix操作系統(tǒng)
點贊
收藏

51CTO技術(shù)棧公眾號