linux動態鏈結庫

2021-06-04 17:08:31 字數 979 閱讀 7395

在做完mini6410移植全攻略後,打算把自己的linux c筆記,貼出來和大家共享,有不對支援希望大家指出,謝謝!!

在上篇文章中,是對靜態鏈結庫的介紹,其實有了上面的介紹動態鏈結庫的製作就簡單了,這篇來製作動態鏈結庫~~~

建立動態鏈結庫:

[cpp]view plain

copy

print?

#gcc –shared –wall –fpic bar.o foo.o –olibfoobar.so

或手動指定庫路徑     

[cpp]view plain

copy

print?

$ gcc -o foobar main.c-llt -b /path/to/lib  

這裡的-b 選項就新增 /path/to/lib 到gcc搜尋的路徑之中。這樣鏈結沒有問題但是方法ii

中手動鏈結好的程式在執行時候仍舊需要指定庫路徑(鏈結和執行是分開的)。需要新增系

統變數 ld_library_path :

[cpp]view plain

copy

print?

$ exportld_library_path=/path/to/lib   

檢視動態鏈結庫  和上次比 有發現沒~~~~~~

[cpp]view plain

copy

print?

$ ldd test          

linux-gate.so.1 => (0xffffe000)  

libfoobar.so => /usr/lib/libfoobar.so (0xb7f58000)  

libc.so.6 => /lib/libc.so.6 (0xb7e28000)  

/lib/ld-linux.so.2 (0xb7f6f000)   

動態鏈結庫 靜態鏈結庫

包含標頭檔案和庫 idir 指定編譯查詢標頭檔案的目錄,常用於查詢第三方的庫的標頭檔案,例 gcc test.c i.inc o test。ldir 指定鏈結時查詢lib的目錄,常用於查詢第三方庫。llibrary 指定額外鏈結的lib庫 巨集定義 dmacro 以字串 1 預設值 定義 macro...

靜態鏈結庫 動態鏈結庫

庫是寫好的現有的,成熟的,可以復用的 現實中每個程式都要依賴很多基礎的底層庫,不可能每個人的 都從零開始,因此庫的存在意義非同尋常。本質上來說庫是一種可執行 的二進位制形式,可以被作業系統載入記憶體執行。庫有兩種 靜態庫 a lib 和動態庫 so dll windows上對應的是.lib dll ...

靜態鏈結庫,動態鏈結庫

關於靜態鏈結庫,參考如下博文 當你完成了 開發,想把這個 給別人用,但是又不希望別人看到原始碼,就要給別人乙個庫和標頭檔案,庫和標頭檔案是配合的,缺一不可。或者過程相反,你從別人那裡拿到乙個庫和標頭檔案來使用。那麼如何編譯生成乙個庫給他人,如何使用從他人那裡拿到的庫呢?範例1 我們想把linuxfr...