国产三级农村妇女在线,国产精品毛片a∨一区二区三区,国产乱子伦视频大全,国产精品色拉拉,国产欧美日韩一区二区三区,

首頁 > 技術(shù) > Linux

linux下生成s文件的過程叫什么

Linux 2022-07-14 21:42:19

Linux下生成s文件的過程叫“編譯”。linux中的編譯器gcc會(huì)把預(yù)處理后的“.i”文件進(jìn)行語法分析、語義分析以及優(yōu)化后生成匯編代碼文件(“.s”文件),執(zhí)行語法為“gcc -S 文件名.i -o 文件名.s”;接著匯編器會(huì)把匯編代碼文件轉(zhuǎn)換成中間目標(biāo)文件;最后鏈接器ld會(huì)把目標(biāo)文件與所需要的靜態(tài)鏈接庫(kù)、動(dòng)態(tài)鏈接庫(kù)鏈接起來成為可執(zhí)行的文件。

教程操作環(huán)境:linux7.3系統(tǒng)、Dell G3電腦。

linux下編譯c文件成為可執(zhí)行文件的過程

使用gcc把C文件編譯成可執(zhí)行文件可分為四步:預(yù)編譯、編譯、匯編、連接。

1、預(yù)編譯(生成.i文件)

預(yù)編譯器cpp把源文件和相關(guān)的頭文件(如實(shí)例代碼中的頭文件stdio.h)預(yù)編譯成一個(gè).i的文件。

執(zhí)行的命令:gcc -E 文件名.c -o 文件名.i

預(yù)編譯的作用:

a、處理所有的“#include”預(yù)編譯指令

b、處理所有的"#define"指令,將代碼中所有的"#define"刪除,并展開所有的宏定義

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

d、刪除所有的注釋

e、添加行號(hào)和文件名標(biāo)識(shí),以便產(chǎn)生錯(cuò)誤時(shí)給出提示信息

2、編譯(生成.s文件)

編譯器gcc把預(yù)處理后的文件進(jìn)行語法分析、語義分析以及優(yōu)化后生成匯編代碼文件。

執(zhí)行的命令:gcc -S 文件名.i -o 文件名.s

3、匯編(生成.o文件)

匯編器把匯編代碼文件轉(zhuǎn)換成中間目標(biāo)文件

執(zhí)行的命令:gcc -c 文件名.s -o 文件名.o (注意:這里是小寫的-c,而不是大寫的-C,本人在此處踩坑,出現(xiàn)異常)

4、鏈接(生成可執(zhí)行文件)

鏈接器ld把目標(biāo)文件與所需要的所有的附加的目標(biāo)文件(如靜態(tài)鏈接庫(kù)、動(dòng)態(tài)鏈接庫(kù))鏈接起來成為可執(zhí)行的文件

執(zhí)行的命令:gcc 文件名.o -o 文件名

linux下編譯c文件成為可執(zhí)行文件的實(shí)例

1、準(zhǔn)備C文件

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

進(jìn)入編輯模式,輸入以下代碼:

#include

int main(void){
    printf("Hello World!n");
    return 0;
}

首先點(diǎn)擊ESC鍵退出編輯模式,然后輸入:wq(注意輸入的時(shí)候有冒號(hào)哦)回到命令行。

2、編譯

編譯C文件成可執(zhí)行文件

執(zhí)行的命令:gcc hello.c -o hello

輸入ls命令,能看到當(dāng)前文件夾下多了一個(gè)文件:hello

3、執(zhí)行

執(zhí)行:./hello

可得輸出hello World!

相關(guān)推薦:《Linux視頻教程》

以上就是linux下生成s文件的過程叫什么的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注其它相關(guān)文章!

TAg

加載中~

本網(wǎng)站LOGO受版權(quán)及商標(biāo)保護(hù),版權(quán)登記號(hào):國(guó)作登字-2022-F-10126915,未經(jīng)湖南木星科技官方許可,嚴(yán)禁使用。
Copyright ? 2012-2022 湖南木星科技有限公司(木星網(wǎng))版權(quán)所有
轉(zhuǎn)載內(nèi)容版權(quán)歸作者及來源網(wǎng)站所有,本站原創(chuàng)內(nèi)容轉(zhuǎn)載請(qǐng)注明來源,商業(yè)媒體及紙媒請(qǐng)先聯(lián)系:aishangyiwan@126.com

工信部備案號(hào):湘ICP備19012813號(hào)-5