首頁 > 運維 > linux運維 > 主體

linux下產生s檔的過程叫什麼

青灯夜游
發布: 2022-06-17 11:46:25
原創
3932 人瀏覽過

linux下產生s檔的過程叫「編譯」。 linux中的編譯器gcc會把預處理後的「.i」檔案進行語法分析、語意分析、最佳化後產生彙編程式碼檔案(「.s」檔),執行語法為「gcc -S 檔案名稱.i - o 檔案名稱.s」;接著彙編器會把彙編程式碼檔案轉換成中間目標檔案;最後連結器ld會把目標檔案與所需的靜態連結函式庫、動態連結函式庫連結起來成為可執行的檔案。

linux下產生s檔的過程叫什麼

本教學操作環境:linux7.3系統、Dell G3電腦。

linux下編譯c檔成為執行檔的程序

#使用gcc把C檔編譯成執行檔可分為四步:預編譯、編譯、組譯、連線。

1、預編譯(產生.i檔)

#預編譯器cpp把原始檔和相關的頭檔(如實例程式碼中的頭檔stdio.h)預編譯成一個.i的檔。

執行的指令:gcc -E 檔名.c -o 檔名.i

#預編譯的作用:

a、處理所有的「#include」預先編譯指令

b、處理所有的"#define"指令,將程式碼中所有的"#define"刪除,並展開所有的巨集定義

c、處理所有的條件預編譯指令,如#if #elif #else #ifdef #ifnodef #endif等

d、刪除所有的註解

e、新增行號和檔案名稱標識,以便產生錯誤時給予提示訊息

2、編譯(產生<span style="color: rgb(255, 0, 0);">.s</span>檔)

編譯器gcc把預處理後的檔案進行語法分析、語意分析、最佳化後產生彙編程式碼檔案。

執行的指令:gcc -S 檔名.i -o 檔名.s

#3、組譯(產生.o檔)

彙編器把彙編程式碼檔案轉換成中間目標檔案

執行的指令:gcc -c 檔案名稱.s -o 檔案名稱.o  (注意:這裡是小寫的-c,而不是大寫的-C,本人在此處踩坑,出現異常)

4、鏈接(生成可執行檔)

#連結器ld把目標檔案與所需要的所有的附加的目標檔案(如靜態連結函式庫、動態連結函式庫)連結起來成為可執行的檔案

執行的指令:gcc 檔案名稱. o -o 檔名

linux下編譯c檔成為執行檔的實例

1、準備C檔案

在命令列模式下輸入:vim hello.c

進入編輯模式,輸入以下程式碼:

#include<stdio.h>

int main(void){
    printf("Hello World!\n");
    return 0;
}
登入後複製

先點選ESC鍵退出編輯模式,然後輸入:wq(注意輸入的時候有冒號哦)回到命令列。

2、編譯

編譯C檔成執行檔

執行的指令:gcc hello.c -o hello

輸入ls指令,能看到目前資料夾下多了一個檔案:hello

#3、執行

執行: ./hello

可得輸出hello World!

相關推薦:《Linux影片教學

以上是linux下產生s檔的過程叫什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板