程序編譯生成的文件

目錄

.i?文件

.s?文件

.o文件

總結



在 C++ 編程中,.i、.s和 .o?文件是編譯過程中生成的不同階段的文件,它們代表不同的含義:

.i?文件

全稱?:預處理后的文件(Intermediate File)。
含義:.i文件是源代碼文件(如 .cpp?文件)經過預處理階段生成的文件。預處理階段主要處理源代碼中的預處理指令,如 #include、#define等。.i?文件包含了經過預處理后的代碼,即所有頭文件被展開,宏被替換,條件編譯指令被處理等。
作用:.i文件主要用于調試和查看預處理后的代碼,可以幫助開發者理解預處理階段的操作結果。
生成方式:

g++ -E main.cpp -o main.i

這條命令會讀取 main.cpp?文件,進行預處理操作,并將結果輸出到 main.i?文件中。

詳細說明

  • g++:調用 G++ 編譯器。
  • -E:僅進行預處理。
  • main.cpp:你的源文件。
  • -o main.i:指定輸出文件的名稱為 main.i。

.s?文件

全稱?:匯編文件(Assembly File)。
含義?:.s文件是源代碼文件經過編譯階段生成的匯編代碼文件。編譯階段將預處理后的代碼(.i?文件)轉換為匯編代碼,匯編代碼是低級的、與體系結構相關的代碼,可以直接被匯編器轉換為機器碼
作用:.s?文件主要用于查看編譯器生成的匯編代碼,可以幫助開發者理解編譯器如何將高級語言代碼轉換為低級的匯編代碼,以及優化編譯器生成的代碼等。
生成方式:使用 g++或 gcc編譯器時,可以通過添加 -S選項來生成匯編文件。例如:

g++ -S main.cpp

這會生成 main.s文件。

.o文件

全稱?:目標文件(Object File)/可重定向目標文件
含義?:.o文件是源代碼文件經過編譯和匯編階段生成的目標文件。目標文件包含了機器碼、數據、符號表等信息,是二進制格式的文件,可以直接被鏈接器使用。目標文件是獨立的,不依賴于其他文件,但需要通過鏈接器將其與其他目標文件和庫文件鏈接在一起,生成最終的可執行文件
作用?:.o文件是編譯過程中的中間產物,主要用于鏈接階段。通過將多個目標文件鏈接在一起,可以生成最終的可執行文件。目標文件還包含了符號信息,可以用于調試和動態鏈接等。
生成方式?:使用 g++或 gcc?編譯器時,可以通過添加 -c選項來生成目標文件。例如:

g++ -c main.cpp

這會生成 main.o 文件。

之后就可以在Linux環境下編譯cpp文件

g++ 文件名.cc -o 想要形成的文件名

總結

  1. .i文件是預處理后的文件,主要用于查看預處理階段的結果。
  2. .s?文件是匯編文件,包含匯編代碼,用于查看編譯器生成的匯編代碼。
  3. .o?文件是目標文件,包含機器碼和其他信息,用于鏈接階段生成可執行文件。

這些文件在編譯和鏈接過程中起著重要的作用,可以幫助開發者理解和調試代碼。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/897854.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/897854.shtml
英文地址,請注明出處:http://en.pswp.cn/news/897854.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[S32K]SPI

SpiShiftClockidleLevel: CLK空閑時電平(CPOL); SpiDataShifrEdge:數據移位邊沿(CPHA); SpiDataWidth: SpiTransferStart: MSB(高位起始),LSB(低位起始);; SpiHwUnit: 這是一個具體的硬件? SpiDataShiftE…

系統思考:客戶價值

“真正的市場競爭,不是比誰更能制造產品,而是比誰更能創造價值。” ——杰夫貝索斯 在組織輔導中,我經常問團隊一個問題:“我們的客戶是誰?”大多數人的第一反應是——“支付費用的就是客戶。” 這在過去的市場擴張階…

ArcGIS Pro 車牌分區數據處理與地圖制作全攻略

在大數據時代,地理信息系統(GIS)技術在各個領域都有著廣泛的應用,而 ArcGIS Pro 作為一款功能強大的 GIS 軟件,為數據處理和地圖制作提供了豐富的工具和便捷的操作流程。 車牌數據作為一種重要的地理空間數據&#xf…

OpenCV圖像加權函數:addWeighted

1 addWeighted函數 在OpenCV 里,addWeighted 函數的作用是對兩個圖像進行加權求和,常用于圖像融合、圖像過渡等場景。函數如下: cv2.addWeighted(src1, alpha, src2, beta, gamma[, dst[, dtype]])2 參數解釋 src1:第一個輸入圖…

Tcp網絡通信的基本流程梳理

先來一張經典的流程圖 接下介紹一下大概流程,各個函數的參數大家自己去了解加深一下印象 服務端流程 1.創建套接字:使用 socket 函數創建一個套接字,這個套接字后續會被用于監聽客戶端的連接請求。 需要注意的是,服務端一般有倆…

mysql學習-刪除數據(drop、truncate、delete)

1、概述 drop、truncate、delete都可以刪除mysql中的數據,但它們的作用范圍和操作方式有很大的不同。 2、詳細區別 2.1、drop 特點: 1、速度快 2、會刪除表數據,還會刪除表結構,包括與該表相關的所有數據,索引&…

編程自學指南:java程序設計開發,網絡編程基礎,TCP編程,UDP編程,HTTP客戶端開發

編程自學指南:java程序設計開發,網絡編程基礎 學習目標: 理解網絡協議(TCP/IP、UDP)的核心概念 掌握Socket編程實現客戶端與服務端通信 能夠通過多線程處理并發網絡請求 開發簡單的網絡應用(如聊天程序…

leecode797.所有可能的路徑

深度優先搜索 class Solution { private:vector<vector<int>> result;vector<int> temp;void allPathsSourceTarget(vector<vector<int>> &graph,int v){if(vgraph.size()-1)result.push_back(temp);else{for(auto& adjVertex:graph[v]…

第八節:紅黑樹(初階)

【本節要點】 紅黑樹概念紅黑樹性質紅黑樹結點定義紅黑樹結構紅黑樹插入操作的分析 一、紅黑樹的概念與性質 1.1 紅黑樹的概念 紅黑樹 &#xff0c;是一種 二叉搜索樹 &#xff0c;但 在每個結點上增加一個存儲位表示結點的顏色&#xff0c;可以是 Red和 Black 。 通過對 任何…

微信小程序threejs三維開發

微信小程序threejs開發 import * as THREE from three; const { performance, document, window, HTMLCanvasElement, requestAnimationFrame, cancelAnimationFrame, core, Event, Event0 } THREE .DHTML import Stats from three/examples/jsm/libs/stats.module.js; im…

jupyter無法轉換為PDF,HTMLnbconvert failed: Pandoc wasn‘t found.

無法轉為PDF 手動下載工具 https://github.com/jgm/pandoc/releases/tag/3.6.3 似乎跟我想的不大一樣&#xff0c;還有新的報錯 https://nbconvert.readthedocs.io/en/latest/install.html#installing-tex 不知道下的啥玩意兒 sudo apt-get install texlive-xetex texlive-fon…

關于PLC、電纜線材及氣缸選型的詳細教程

以下是關于PLC、電纜線材及氣缸選型的詳細教程&#xff0c;整合了多個專業來源的核心要點&#xff1a; 一、PLC選型要點 生產廠家選擇 日系PLC&#xff08;如三菱FX系列、歐姆龍CP1系列&#xff09;適合獨立設備或簡單控制系統&#xff0c;性價比高。歐美系PLC&#xff08;如西…

使用 Excel 實現績效看板的自動化

引言 在日常工作中&#xff0c;團隊的績效監控和管理是確保項目順利進行的重要環節。然而&#xff0c;面臨著以下問題&#xff1a; ?數據分散&#xff1a;系統中的數據難以匯總&#xff0c;缺乏一個宏觀的團隊執行情況視圖。?看板缺失&#xff1a;系統本身可能無法提供合適…

02 windows qt配置ffmpeg開發環境搭建

版本說明 首先我使用ffmpeg版本是4.2.1 QT使用版本5.14.2 我選擇是c編譯 在02Day.pro??添加ffmpeg頭?件和庫?件路徑 win32 { INCLUDEPATH $$PWD/ffmpeg-4.2.1-win32-dev/include LIBS $$PWD/ffmpeg-4.2.1-win32-dev/lib/avformat.lib \$$PWD/ffmpeg-4.2.1-win32-dev/l…

Dask:Python高效并行計算利器

Dask&#xff1a;Python高效并行計算利器 Dask是一個開源的Python并行計算庫&#xff0c;旨在擴展Python常用工具&#xff08;如NumPy、Pandas、Scikit-learn等&#xff09;的功能&#xff0c;使其能夠處理更大規模的數據集和更復雜的計算任務。它通過動態任務調度和分布式計算…

掌握市場先機:9款銷售渠道管理工具深度測評

本文主要介紹了以下9款銷售渠道管理工具&#xff1a;1.紛享銷客&#xff1b; 2.銷幫幫&#xff1b; 3.小滿CRM&#xff1b; 4.有贊&#xff1b; 5.Oracle NetSuite&#xff1b; 6.Salesforce Sales Cloud&#xff1b; 7.Cin7&#xff1b; 8.Pipedrive&#xff1b; 9.BigCommerc…

C語言基礎知識04

指針 指針概念 指針保存地址&#xff0c;地址是字節的編號 指針類型和保存的地址類型要一直 使用時注意&#xff0c;把地址轉換為&變量的格式來看 int a[3]; a轉為&a[0] 指針的大小 64bit 固定8字節&#xff0c; 32bit 固定4字節 指針…

計算矩陣邊緣元素之和(信息學奧賽一本通-1121)

【題目描述】 輸入一個整數矩陣&#xff0c;計算位于矩陣邊緣的元素之和。所謂矩陣邊緣的元素&#xff0c;就是第一行和最后一行的元素以及第一列和最后一列的元素。 【輸入】 第一行分別為矩陣的行數m和列數n&#xff08;m<100&#xff0c;n<100&#xff09;&#xff0c…

異常(9)

大家好,今天我們來詳細介紹一下異常拋出的知識,在編寫程序時,如果程序中出現錯誤,此時就需要將錯誤的信息告知給調用者,話不多說,來看. 在java中,可以借助throw關鍵字,拋出一個指定的異常對象,將錯誤對象告知給調用者,具體語法如下&#xff1a; throw new xxx("異常產生…

網絡安全就業形勢

網絡安全是一個日益增長的行業&#xff0c;對于打算進入或轉行進入該領域的人來說&#xff0c;制定一個清晰且系統的職業規劃非常重要。2025年&#xff0c;網絡安全領域將繼續發展并面臨新的挑戰&#xff0c;包括不斷變化的技術、法規要求以及日益復雜的威脅環境。 第一部分&am…