3、學習動態鏈結庫時遇到的坑
有兩個工程:
下面以乙個簡單的加減乘除demo為例記錄生成、使用動態鏈結庫的方法。
生成鏈結庫的**實際上跟最後工程的**沒有關係,該步驟的目的僅僅是生成動態鏈結庫,之後將so庫檔案和介面宣告.**件提供給別人,別人就可以使用了。
## 1.2 終端執行命令
我們要用庫檔案中的函式,我們就需要自己新建乙個***.**件宣告這些函式,或者直接copy乙份提供so庫檔案的人員給我們提供的.**件。然後再對應.c檔案中加上標頭檔案引用:#include 「***.h」。最後進行工程編譯。
否則會報錯函式未定義,或者找不到***.**件。
簡單概括,步驟如下:
使用so庫,**注意事項步驟:
有時候鏈結庫的時候,會提示找不到庫,報錯,因為系統環境變數會預設找ld_library_path所指向的路徑,此時可以臨時這是環境變數ld_library_path的值,也可以將lib***.so拖到usr/lib下面,也可以用另一種方法,即編譯命令中直接加上引數,指定庫路徑,這樣寫makefile的時候也會非常方便。
即: gcc main.c -o main -l .
/lib/
-lcaculate -wl,
-rpath,$(pwd)
/lib/
中的-wl,-rpath 這兩個引數,具體含義如下:
-wl,
-rpath 指定環境變數庫路徑,$(pwd)
/lib/表示當前目錄下的lib目錄
Linux C 生成動態鏈結庫
在linux c中生成動態庫方法如下 1,測試程式 1 生成動態庫的源 檔案test.c include stdio.h int get result int firstnum,int secondnum 其介面檔案為 ifndef test h define test h int get resu...
linux c 動態鏈結庫so編寫
linux下的動態鏈結庫是.so檔案,即 shared object,下面是乙個簡單的例子說明如何寫.so以及程式如何動態載入.so中的函式和物件。testso.h ifndef testso h define testso h extern c endif testso h testso.cpp ...
動態鏈結庫使用 靜 動態鏈結庫使用總結
一 靜態庫編寫 1.首先當然是開vs然後建立乙個靜態庫工程啦 2.格式.一般有標頭檔案.h和原檔案.cpp,當然你也可以寫一在乙個cpp裡.mydll.h extends c mydll.cpp include mylib.h int sum int num1,int num2 int mult i...