日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux GCC用法

發布時間:2025/3/21 linux 66 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux GCC用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

GCC原名為GNU C語言編譯器(GNU C Compiler),只能處理C語言。但其很快擴展,變得可處理C++,后來又擴展為能夠支持更多編程語言,如Fortran、Pascal、Objective -C、Java、Ada、Go以及各類處理器架構上的匯編語言等,所以改名GNU編譯器套件(GNU Compiler Collection。

在使用gcc編譯程序時,編譯過程可以細分為4個階段:

  • 預處理(Pre-Processing)
  • 編譯(Compiling)
  • 匯編(Assembling)
  • 鏈接(Linking)
  • 以最簡單的HelloWorld程序為例,hello.c的一生如下圖所示:

    下面以hello.c程序為實例,簡單介紹Linux下gcc命令的用法,通過gcc命令來輸出編譯過程中每一步生成的文件,理解C語言程序從編譯到運行的整個流程。

    在Ubuntu20.04中創建hello.c:

    /*hello.c*/#include<stdio.h> int main() {printf("hello, world!\n");return 0; }

    gcc 命令的常用選項

    選項 解釋
    -x language filename 設定文件所使用的語言, 使后綴名無效, 對以后的多個有效。
    -save-temps 保存編譯過程中生成的一些列中間文件。
    -c 只激活預處理,編譯,和匯編,也就是他只把程序做成obj文件
    -S 只激活預處理和編譯,就是指把文件編譯成為匯編代碼,可以用文本編輯器查看。
    -E 只激活預處理,這個不生成文件, 你需要把它重定向到一個輸出文件里面。如gcc -E hello.c > pianoapan.txt或gcc -E hello.c | more
    -ansi 只支持 ANSI 標準的 C 語法。這一選項將禁止 GNU C 的某些特色, 例如 asm 或 typeof 關鍵詞。
    -g 生成調試信息。GNU 調試器可利用該信息。
    -o FILE 生成指定的輸出文件。用在生成可執行文件時。
    -O0 不進行優化處理。
    -Og 不進行優化處理。
    -O 或 -O1 優化生成代碼。
    -O2 進一步優化。
    -O3 比 -O2 更進一步優化,包括 inline 函數。
    -w 不生成任何警告信息。
    -Wall 生成所有警告信息。
  • 一步到位:gcc hello.c -o hello,gcc內部自動完成預處理、編譯、匯編、鏈接四個步驟,輸出文件為二進制代碼。
  • 只進行預處理:gcc -E hello.c -o hello.i,輸出文件仍可以用文本編輯器查看。
  • 編譯為匯編代碼:gcc -S hello.i -o hello.s,輸出文件仍可以用文本編輯器查看。
  • 匯編:gcc -c hello.s -o hello.o,得到二進制可執行文件。
  • 鏈接:gcc hello.o -o hello,將上一步得到的文件與C標準輸入輸出庫進行連接,最終生成程序hello。
  • 總結

    以上是生活随笔為你收集整理的Linux GCC用法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。