Linux動態鏈結庫程式設計入門

2021-08-22 09:16:46 字數 999 閱讀 4569

動態鏈結庫是一種通用的軟體元件技術,是多種作業系統中提供基本服務的方式。比如win32核心就是3個dll檔案構成。這種技術在linux作業系統下也有對應的實現,就是linux標準物件standard ojbect,對應的擴充套件名為.so。

下面通過乙個簡單的例子開始介紹linux標準物件。

我們的標準物件檔案含有乙個函式,不需要宣告export匯出符號,只需要編譯器設定即可。如下:

#include

#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

很鬱悶,昨天把乙個盤搞沒了,我的linux虛擬機器,學習資料都化為烏有,這下好了一了百了,認真看書advanced programming in theunix environment

,整了好就都沒找到像write,fork這樣的系統和fopen和c等的一些庫函式源****有,超級鬱悶,神啊救救我!!!

Linux 動態鏈結庫程式設計入門

動態鏈結庫是一種通用的軟體元件技術,是多種作業系統中提供基本服務的方式。比如win32核心就是幾個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...