動態鏈結庫是一種通用的軟體元件技術,是多種作業系統中提供基本服務的方式。比如win32核心就是幾個dll檔案構成。這種技術在linux作業系統下也有對應的實現,就是linux標準物件standard ojbect,對應的擴充套件名為.so。下面通過乙個簡單的例子開始介紹linux標準物件。
我們的標準物件檔案含有乙個函式,不需要宣告export匯出符號,只需要編譯器設定即可。如下:
#include
void show()
儲存為myso.c檔案,按照如下編譯:
$ gcc -fpic -shared -o libmyso.so myso.c
執行生成乙個libmyso.so檔案,按照linux標準物件的命名慣例,應該在庫名稱之前加上"lib"字首,儘管不是必須的。編譯開關-fpic代表函式符號可以重定向,-shared代表編譯結果是乙個標準物件。
不同於win32dll,linux標準物件中的所有函式都是直接匯出的,都可以被呼叫程式所訪問。下面我們編寫呼叫程式:
#include
int main()
儲存為invoke.c,按照如下gcc開關編譯:
$ gcc -o test invoke.c ./libmyso.so
編譯生成test可執行檔案。如上編譯條件的最後一條需要是所呼叫的標準物件檔名,注意必須含有路徑。如果只是使用libmyso.so,則必須確保這個檔案在可訪問的path下面。本例所使用的檔名"./libmyso.so"是當前路徑下的,使用了相對路徑。
測試輸出結果如下:
$ ./test
invoke my so
standard object by gashero
Linux動態鏈結庫程式設計入門
動態鏈結庫是一種通用的軟體元件技術,是多種作業系統中提供基本服務的方式。比如win32核心就是3個dll檔案構成。這種技術在linux作業系統下也有對應的實現,就是linux標準物件standard ojbect,對應的擴充套件名為.so。下面通過乙個簡單的例子開始介紹linux標準物件。我們的標準...
Linux動態鏈結庫 標準物件 程式設計入門
linux動態鏈結庫程式設計入門 動態鏈結庫是一種通用的軟體元件技術,是多種作業系統中提供基本服務的方式。比如win32核心就是3個dll檔案構成。這種技術在linux作業系統下也有對應的實現,就是linux標準物件standard ojbect,對應的擴充套件名為.so。下面通過乙個簡單的例子開始...
linux動態鏈結庫
在做完mini6410移植全攻略後,打算把自己的linux c筆記,貼出來和大家共享,有不對支援希望大家指出,謝謝!在上篇文章中,是對靜態鏈結庫的介紹,其實有了上面的介紹動態鏈結庫的製作就簡單了,這篇來製作動態鏈結庫 建立動態鏈結庫 cpp view plain copy print?gcc sha...