當前位置:首頁 » 編程語言 » c語言鏈接器
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言鏈接器

發布時間: 2023-02-19 12:17:40

A. c語言源程序開發的第一步是什麼

第一步

在程序編輯過程中,所輸入源文件中的是一些字元碼,但是機器能夠直接處理的是0、1信息。為此,首先要將源程序文件翻譯成0、1碼所表示的信息,應用相應的文件保存。這種保存0、1碼的文件稱為目標程序文件。由源程序翻譯成目標程序的過程稱為編譯。

在編譯過程中,還要對源程序中的語法和邏輯結構進行檢查。編譯任務是由稱為編譯器的軟體完成的。目標程序文件尚且不能執行,它們只是一些目標程序模塊。

第二步

將目標程序模塊以及程序所需的系統固有目標程序模塊(如執行輸入、輸出操作的模塊)鏈接成一個完成的程序。經正確鏈接所生成的文件才是可執行文件。完成鏈接過程的軟體稱為鏈接器。

第三步

C語言中的運算符種類很多,正確的使用這些運算符,有以下三點需要注意。

1.含義

要注意區分一個運算符符號在C語言程序中和在普通數學表達式中的意義的不同,如「=」。

2.優先順序

在一個表達式中存在多個運算符時候,進行運算的先後順序。

3.結合性

即在一個表達式中存在多個優先順序別相同的運算符時,先進行哪個運算符的運算。

第四步

標識符也稱為名字,如變數名、函數名、文件名等。在C語言程序中,所使用的標識符應當符合以下詞法規則。

(1).標識符是大/小寫字母、數字和下劃線所組成的序列,但不能以數字開頭。

(2)C語言區分同一字母的大/小寫,如abc和abC就是不同的標識符。

(3)C89要求編譯器所能識別的標識符長度不多於31個有效字元。C99要求編譯器所能識別的標識符長度不多於63個有效字元。

(4)普通標識符不能使用對於系統有特殊意義的名字,如類型名、語句名等。這些對系統具有特殊意義的名字稱為關鍵字。

B. C語言源程序文件經過編譯連接之後生成一個後綴為_____的文件。

如果只生成一個文件,那麼這個題目答案是B。編譯(compile)後生成目標文件,後綴:.obj。也就是機器碼。

然後鏈接器(Linker) 連接生成可執行文件,後綴:.exe。最後運行命令(go),直接運行.exe文件。

(2)c語言鏈接器擴展閱讀:

簡單講,編譯器就是將「一種語言(通常為高級語言)」翻譯為「另一種語言(通常為低級語言)」的程序。

一個現代編譯器的主要工作流程:源代碼(source code) →預處理器(preprocessor) →編譯器(compiler) →目標代碼(object code) →鏈接器(Linker) → 可執行程序(executables)

高級計算機語言便於人編寫,閱讀交流,維護。機器語言是計算機能直接解讀、運行的。

編譯器將匯編或高級計算機語言源程序(Source program)作為輸入,翻譯成目標語言(Target language)機器代碼的等價程序。

源代碼一般為高級語言 (High-level language), 如Pascal、C、C++、Java、漢語編程等或匯編語言。

而目標則是機器語言的目標代碼(Object code),有時也稱作機器代碼(Machine code)。

對於C#、VB等高級語言而言,此時編譯器完成的功能是把源碼(SourceCode)編譯成通用中間語言(MSIL/CIL)的位元組碼(ByteCode)。

最後運行的時候通過通用語言運行庫的轉換,編程最終可以被CPU直接計算的機器碼(NativeCode)。

C. 在c語言中「可執行程序」是什麼意思

C語言中的可執行程序就是將用文本信息表示的程序翻譯成計算機認識的二進制代碼串。

首先,我們先用C語言把源代碼寫好,然後交給C語言編譯器。C語言編譯器內部分為前端和後端。

(1)編譯器前端

前端負責將C語言代碼進行詞法和語法上的解析,然後可以生成中間代碼。

中間代碼這部分不是必須的,但是它能夠為程序的跨平台移植帶來諸多好處。比如,同樣的一份C語言源代碼在一台計算機上編譯完之後,生成一套中間代碼。

然後針對不同的目標平台(比如要將這一套代碼分別編譯成 ARM 處理器的二進制機器碼、MIPS 處理器的二進制機器碼以及 x86 處理器的二進制機器碼),只需要編寫相應目標平台的編譯器後端即可。

所以,這么做就可以把編譯器的前端與後端剝離開來(這在軟體工程上又可稱為解耦合),不同處理器廠商可以針對自家的處理器特性,對中間代碼生成到目標二進制代碼的過程再度進行優化。

(2)編譯器後端

接下來,由C語言編譯器後端生成源文件相應的目標文件。

目標文件在 Windows 系統上往往是.obj文件,而在 Unix/Linux 系統上往往是.o文件,C語言的源文件在所有平台上都統一用.c文件表示。

(3)鏈接器

最後,對於各個獨立的目標文件,通過連接器將它們合並成一個最終可執行文件。

(3)c語言鏈接器擴展閱讀:

起初,C語言沒有官方標准。1978年由美國電話電報公司(AT&T)貝爾實驗室正式發表了C語言。布萊恩·柯林漢(Brian Kernighan) 和 丹尼斯·里奇(Dennis Ritchie) 出版了一本書,名叫《The C Programming Language》。

這本書被 C語言開發者們稱為K&R,很多年來被當作 C語言的非正式的標准說明。人們稱這個版本的 C語言為K&R C。

K&R C主要介紹了以下特色:

結構體(struct)類型

長整數(long int)類型

無符號整數(unsigned int)類型

把運算符=+和=-改為+=和-=。因為=+和=-會使得編譯器不知道使用者要處理i = -10還是i =- 10,使得處理上產生混淆。

即使在後來ANSI C標准被提出的許多年後,K&R C仍然是許多編譯器的最 准要求,許多老舊的編譯器仍然運行K&R C的標准。

1970到80年代,C語言被廣泛應用,從大型主機到小型微機,也衍生了C語言的很多不同版本。

1983年,美國國家標准協會(ANSI)成立了一個委員會X3J11,來制定 C語言標准。

1989年,美國國家標准協會(ANSI)通過了C語言標准,被稱為ANSI X3.159-1989 "Programming Language C"。因為這個標準是1989年通過的,所以一般簡稱C89標准。有些人也簡稱ANSI C,因為這個標準是美國國家標准協會(ANSI)發布的。

1990年,國際標准化組織(ISO)和國際電工委員會(IEC)把C89標準定為C語言的國際標准,命名為ISO/IEC 9899:1990 - Programming languages -- C 。因為此標準是在1990年發布的,所以有些人把簡稱作C90標准。不過大多數人依然稱之為C89標准,因為此標准與ANSI C89標准完全等同。

1994年,國際標准化組織(ISO)和國際電工委員會(IEC)發布了C89標准修訂版,名叫ISO/IEC 9899:1990/Cor 1:1994 ,有些人簡稱為C94標准。

1995年,國際標准化組織(ISO)和國際電工委員會(IEC)再次發布了C89標准修訂版,名叫ISO/IEC 9899:1990/Amd 1:1995 - C Integrity ,有些人簡稱為C95標准。

C99標准

1999年1月,國際標准化組織(ISO)和國際電工委員會(IEC)發布了C語言的新標准,名叫ISO/IEC 9899:1999 - Programming languages -- C ,簡稱C99標准。這是C語言的第二個官方標准。

參考資料:網路-c語言