新聞中心

        EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > Linux下編譯運(yùn)行C語言文件

        Linux下編譯運(yùn)行C語言文件

        作者: 時間:2024-05-23 來源:網(wǎng)絡(luò) 收藏

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

        本文引用地址:http://www.104case.com/article/202405/459100.htm

        在命令行模式下輸入:vim test.c(vi也可以,但建議用vim)

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

        #include<stdio.h> int main(){    printf("Hello World!n");    return 0;}


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

        二、 編譯

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

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

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

        三 、 執(zhí)行

        執(zhí)行:./test.out

        可得輸出hello World!

        四、 編譯的四個步驟

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

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

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

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

        預(yù)編譯的作用:

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

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

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

        d、刪除所有的注釋

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

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

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

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

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

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

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

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

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

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




        關(guān)鍵詞: Linux C語言 開發(fā)

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 马山县| 开封市| 武威市| 大化| 葵青区| 浮山县| 都安| 壶关县| 县级市| 绥中县| 广水市| 六盘水市| 台中县| 锡林浩特市| 宁强县| 宁河县| 鄂温| 塔城市| 康乐县| 金昌市| 仁化县| 忻州市| 乐东| 常德市| 西盟| 澄迈县| 夹江县| 浙江省| 城固县| 托克托县| 巴里| 平塘县| 仁化县| 积石山| 嘉祥县| 永川市| 哈密市| 新绛县| 扎鲁特旗| 西林县| 娄底市|