在linux c中生成動態庫方法如下:
1,測試程式:
1)生成動態庫的源**檔案test.c:
#include "其介面檔案為:stdio.h
"int get_result(int firstnum,int
secondnum)
#ifndef _test_h_#define _test_h_
int get_result(int firstnum,int
secondnum);
#endif
#include #include2,生成動態鏈結庫"test.h
"int
main()
gcc test.c –fpic –shared –o libtest.so該命令生成動態庫libtest.so,預設以lib開頭,以.so為字尾;
-fpic:編譯為位置獨立的**;
-shared:編譯為動態庫。
3,呼叫動態庫
gcc main.c -l. -ltest -o main指定動態庫路徑:
export ld_library_path=$(pwd)假設動態鏈結庫libtest.so和可執行檔案位於同一目錄,如無此命令會顯示下述錯誤:
./main: error while loading shared libraries:libtest.so:cannot open shared object file:no sush file or directory.
4,執行:
./main
5,結果輸出為:
生成動態鏈結庫
fpic pic就是position independent code pic使.so檔案的 段變為真正意義上的共享 如果不加 fpic,則載入.so檔案的 段時,段引用的資料物件需要重定位,重定位會修改 段的內容,這就造成每個使用這個.so檔案 段的程序在核心裡都會生成這個.so檔案 段的copy...
linux c 動態鏈結庫so編寫
linux下的動態鏈結庫是.so檔案,即 shared object,下面是乙個簡單的例子說明如何寫.so以及程式如何動態載入.so中的函式和物件。testso.h ifndef testso h define testso h extern c endif testso h testso.cpp ...
GCC 生成動態鏈結庫
linux 下動態鏈結庫 shared object file,共享物件檔案 的檔案字尾為.so,它是一種特殊的目標檔案 object file 可以在程式執行時被載入 鏈結 進來。使用動態鏈結庫的優點是 程式的可執行檔案更小,便於程式的模組化以及更新,同時,有效記憶體的使用效率更高。如果想建立乙個...