gcc的標頭檔案和共享庫

2021-05-27 23:11:32 字數 770 閱讀 1471

gcc在進行編譯預處理時,要在工具鏈預設的一些頭檔案目錄中搜尋標頭檔案,這些目錄一般包括 

/usr/include  和

/usr/local/include(

linux的系統標頭檔案一般儲存在/usr/include 目錄下,自己安裝的軟體的標頭檔案一般存放在/usr/local/include目錄下)。如果希望gcc能夠到其他目錄中查詢標頭檔案,則需要在引數上指定,如:

gcc  -i~/include  main.c     #  -i 引數用於增加標頭檔案的查詢目錄

如果在原始碼中使用了共享庫中的函式,則目標檔案就要與相應的共享庫連線起來。gcc 缺省會連線 c 共享庫,因為它提供了基本的系統呼叫介面,幾乎所有的程式都會使用它。如果要連線其它共享庫則必須在引數上指定,例如:

gcc  -lpthread  main.c    #  -i 引數用於指定要連線的共享庫

pthread 是執行緒庫,如果程式中用了執行緒相關函式,必須與這個庫連線。要注意共享庫的檔名一般是  lib*.so ,但在 -l 引數後面時不需要寫全,編譯器會自動將名字補全成檔名。

鏈結共享庫時 gcc 到預設的一些目錄中查詢,這些目錄一般包括  /usr/lib 和  /lib 。如果要鏈結的共享庫在其它目錄中,需要 -l 引數指定,如:

gcc  -l~/src/sqlite3  -lsqlite3  main.c    #  -l

引數用於指定查詢共享庫的目錄

注意: -l引數只是指明到**去找共享庫,但gcc並不知道要鏈結哪個庫,需要通過 -l 引數指明要鏈結的共享庫名。

gcc和 的包含標頭檔案庫檔案方法

l引數就是用來指定程式要鏈結的庫,l引數緊接著就是庫名,那麼庫名跟真正的庫檔名有什麼關係呢?就拿數學庫來說,他的庫名是m,他的庫檔名是libm.so,很容易看出,把庫檔名的頭lib和尾.so去掉就是庫名了。好了現在我們知道怎麼得到庫名,當我們自已要用到乙個第三方提供的庫名字libtest.so,那麼...

Linux系統 GCC搜尋標頭檔案和庫檔案的執行順序

1 gcc g 查詢標頭檔案和庫檔案預設搜尋路徑 2 標頭檔案 gcc 在編譯時尋找所需要的標頭檔案 搜尋會從 i開始 然後找gcc的環境變數 c include path,cplus include path,objc include path 再找內定目錄 usr include usr loc...

gcc指定標頭檔案和動態庫的方法

本文詳細介紹了linux 下gcc標頭檔案指定方法,以及搜尋路徑順序的問題。另外,還總結了,gcc動態鏈結的方法以及路徑指定,同樣也討論了搜尋路徑的順序問題。本文包含了很多的例子,具有很強的操作性,希望讀者自己去走一遍。一.include 與 include include 直接到系統指定的某些目錄...