天天看點

c 語言的動态連結庫入門

先寫一個簡單的動态庫

struct.h:

struct.c

gcc一些參數解析

-shared:指定生成動态連結庫。

-static:指定生成靜态連結庫。

-fPIC:表示編譯為位置獨立的代碼,用于編譯共享庫。目标檔案需要建立成位置無關碼,概念上就是在可執行程式裝載它們的時候,它們可以放在可執行程式的記憶體裡的任何地方。

-L.:表示要連接配接的庫在目前目錄中。

-l:指定連結時需要的動态庫。編譯器查找動态連接配接庫時有隐含的命名規則,即在給出的名字前面加上lib,後面加上.so來确定庫的名稱。

-Wall:生成所有警告資訊。

-ggdb:此選項将盡可能的生成gdb的可以使用的調試資訊。

-g:編譯器在編譯的時候産生調試資訊。

-c:隻激活預處理、編譯和彙編,也就是把程式做成目标檔案(.o檔案)。

-Wl,options:把參數(options)傳遞給連結器ld。如果options中間有逗号,就将options分成多個選項,然後傳遞給連結程式。 
)
           

下面是怎麼調用這個庫:

下面是編譯這個測試檔案

-L表示庫就在目前目錄

-llibstruct -ldl 表示連結過程中需要的兩個庫,第一個就是我們剛才生成的,後面一個是dlfcn.h這個頭檔案所在的庫。這樣才能生成可執行檔案。

如果是在eclipse裡面。可以右鍵選中項目,點屬性,再選擇c/c++ build 下的setting。

右邊會有個gcc linker 點裡面的libraries,往裡面增加一個dl就行了