Linux下gcc編譯器的使用總結__Linux

來源:互聯網
上載者:User
一、基本選項
GCC是開源軟體中的一個頂級的C編譯器
gcc -Wall -o hello hello.c
-W是開啟警告選項
-all開啟所有
-v顯示詳細資料
-c只編譯產生目標檔案,不產生可執行檔,就是產生.o檔案

GCC不存在連結次序的問題,但最好遵守定義在後、調用在前的規則

有效管理龐大的項目,有make


二、連結外部庫
標準庫:
gcc -Wall main.c /usr/lib/libm.a -o calc
gcc -Wall main.c -lm -o calc

-lm相當於libm.a (僅對標準庫)
使用標頭檔<math.h>時使用此選項
-I選項指明了在哪個目錄下搜尋標頭檔
gcc -Wall -I/opt/mysoft/include -o main

-L指定了搜尋的庫檔案目錄

指定環境變數

如果既定義了-I,-L和環境變數,則優先找-I和-L,如果沒有找到,就去找環境變數,如果環境變數還沒有找到,則去找系統路徑

推薦-I,-L這種方法

三、建立自己的庫
ar 命令:把一堆的目標檔案.o合成一個庫檔案
ar cr libName.a file1.o file2.o ... filen.o
查看一庫裡有多少個目標檔案
ar t libName.a

gcc -Wall -c main.c libFunc.a -o hello
-c main.c 和 libFunc.a的順序不能交換


gcc -Wall main.c -L. -lfunc -o hello
gcc -Wall main.c -L/home/baiyun/study/mysoft -lfunc -o hello

四、動態庫和靜態庫
.lib .a
.dll .so

用ldd a.out來查看 a.out需要哪些動態庫



五、C語言標準
gcc如果不加選項,則使用 GNU標準編譯,加-ansi,-std,最新版是-std=c99

gcc -Wall -ansi -D_GNU_SOURCE pi.c -o pp
使用標準C來編譯 ,但連結時候使用GNU的庫

-ansi -pedantic兩個參數連用,就嚴格按照標準C來調用
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.