01gcc入門(上)

來源:互聯網
上載者:User

標籤:io   strong   檔案   ar   時間   new   管理   ef   

n  基本架構:

a)         Gcc 主要特徵

b)         Gcc編譯四個步驟:預先處理---》編譯---》彙編---》連結

c)         Gcc常用選項

d)         Gcc編譯多檔案

 

  1. 1.      Gcc主要特徵

(1)       gcc支援多種硬體平台;

(2)       能夠跨平台交叉編譯,可以編譯出能夠在其它硬體平台上啟動並執行程式。

 

  1. 2.      Gcc編譯四個步驟

   四個步驟:預先處理---》編譯---》彙編---》連結

(1)     hello.c-à前置處理器(cpp)-àhello.i--à編譯器(ccl)-àhello.s(組譯工具)-à彙編器(as)-àhello.o(可重定位目標程式)

(2)     hello.o和庫檔案--à連結器(ld)---à可執行程式

 

  1. 3.      Gcc常用選項

(1)       -o  產生目標(.i、.s、.o、可執行檔)   記憶技巧:iso  ESc

(2)       -E  預先處理                            

(3)       -S  產生彙編檔案(大寫的S)

(4)       -c  取消連結步驟,產生.o檔案

(5)       -Wall 編譯時間對錯誤發出警告,編譯的時候最好加上 -Wall(warning all)。

(6)       -I  添加標頭檔的搜尋路徑

(7)       -L  添加庫檔案的搜尋路徑

(8)       -llib  連結lib庫

(9)       -g    在目標檔案中嵌入調試資訊,方便gdb調試。

將一些debug資訊存放到目標檔案和可執行檔裡的一個符號表 (symbol table) 裡。

 

  *   gcc  -v  顯示編譯過程的詳細資料,當程式有錯誤時,可以用來協助尋找錯誤。

 

  1. 4.      Gcc編譯多檔案

  例子:假如有三個檔案:hello_fn.h  hello_fn.c  main.c

(1)     一次性編譯:   gcc  hello_fn.c  main.c   -o   newhello

(2)     獨立編譯:

          Gcc  -Wall  -c  main.c  -o  main.o

          Gcc  -Wall  -c  hello_fn.c  –o  hello_fn.o

          Gcc  -Wall   main.o  hello_fn.o  -o  newhello

獨立編譯的方法較好,在大的項目工程中,只需對更改過的檔案重新編譯,這樣可以節省相當多的時間。

在具體工程實踐中需要用Makefile檔案對其管理。

 

  1. 一些細節:

gcc  --version  查詢gcc的版本

which  gcc    查詢gcc的安裝目錄

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.