- C/C++實踐進階之道:寫給程序員看的編程書
- 陳黎娟
- 675字
- 2020-06-29 11:37:37
2-2 程序與可執行文件
大家注意到,圖2-2中的Winword.exe文件的擴展名為exe,這是標記可執行文件的擴展名之一。可以把可執行文件稱作程序。反過來也可以。
請記住,可執行文件的擴展名,一個軟件至少有一個可執行文件才能夠被普通用戶使用。或者可以這樣說:你使用Word軟件,最起碼得有Winword.exe可執行文件。
可執行文件是由計算機CPU可以識別的機器指令和數據組成的。可執行文件也有格式和規范,開發系統程序和病毒的程序員,對這個研究很多。
作為未來的程序員,你必須知道源程序都是所謂的ASII碼,所謂的.exe文件是二進制的,還知道它們的不同。
創建C程序時,將語句放在一個擴展名為C的源文件中,其實只是一個文本文件,里面是ASII碼。假如程序編譯成功,編譯器將生成一個具有exe擴展名的可執行文件。如在第5段中所述。許多程序都使用包含常用的頭文件(具有.h擴展名,也是文本文件)。如果編譯完程序后檢查子目錄,可發現一個或多個有obj擴展名的文件。這些文件稱作目標文件,它包含計算機能理解的、以0和1的形式存在的指令,所以也是二進制的。但這些目標文件不能被執行,因為它們的內容相對.exe文檔來說不是很完整,還需要通過鏈接產生*.exe文件。
比如,C程序提供一些例行程序(比如printf)來完成常用的操作,以減少程序中的語句數目。編譯器對程序完成語法檢查后,將生成一個目標文件。對于程序first.c,編譯器將生成一個名為first.obj的目標文件。接著,一個稱為連接器的程序將目標文件中的語句和編譯器提供的函數(例如printf)連接起來,生成可執行文件。在大多數情況下,激活編譯器來檢查源代碼,如果程序編譯成功,編譯器將自動激活連接器。
具體細節,可以在后面的章節和具體開發過程中慢慢體會。
推薦閱讀
- Learning Scala Programming
- C語言程序設計
- STM32F0實戰:基于HAL庫開發
- Ext JS 4 Web Application Development Cookbook
- Visual C#.NET程序設計
- Node.js:來一打 C++ 擴展
- Learning R for Geospatial Analysis
- C++20高級編程
- OpenCV with Python By Example
- Serverless Web Applications with React and Firebase
- 現代C++語言核心特性解析
- RESTful Web API Design with Node.js(Second Edition)
- 美麗洞察力:從化妝品行業看顧客需求洞察
- Java Web開發任務教程
- 嵌入式Linux與物聯網軟件開發:C語言內核深度解析