linux下生成s文件的過程叫什么
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)入編輯模式,輸入以下代碼:
#includeint 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)文章!
版權(quán)聲明:
本站所有文章和圖片均來自用戶分享和網(wǎng)絡(luò)收集,文章和圖片版權(quán)歸原作者及原出處所有,僅供學(xué)習(xí)與參考,請(qǐng)勿用于商業(yè)用途,如果損害了您的權(quán)利,請(qǐng)聯(lián)系網(wǎng)站客服處理。