Linux C 生成動態鏈結庫

2022-08-12 03:51:10 字數 887 閱讀 4585

在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 #include 

"test.h

"int

main()

2,生成動態鏈結庫

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 可以在程式執行時被載入 鏈結 進來。使用動態鏈結庫的優點是 程式的可執行檔案更小,便於程式的模組化以及更新,同時,有效記憶體的使用效率更高。如果想建立乙個...