動態與靜態函式庫學習

2022-07-21 13:00:24 字數 646 閱讀 6304

軟體之間都會互相使用彼此提供的函式庫來進行特殊功能的執行。

函式庫依照是否被編譯到程式內部而分為動態函式庫靜態函式庫

在目前的linux distribution傾向使用動態函式庫,絕大多數函式庫放置在/usr/lib、lib目錄下。此外,linux系統裡面很多的函式庫其實kernal就提供了,kernal的函式庫在/lib/modules裡面。

由於記憶體的訪問速度是硬碟的好幾倍,所以,如果將常用到的動態函式庫先載入到記憶體當中(快取,cache),那當軟體要使用動態函式庫時,就不需要從頭由硬碟裡面讀出,這樣就增進動態函式庫的讀取速度,要完成這種操作就需要ldconfig 和 /etc/ld.so.conf的協助。

將動態函式庫載入快取記憶體當中的步驟:

首先,必須在 /etc/ld.so.conf 裡面寫下想要讀入快取記憶體當中的動態函式庫所在的目錄,是目錄而不是檔案。

接下來利用 ldconfig 這個可執行檔案將 /etc/ld.so.conf 的資料讀入快取記憶體當中。

同時也將資料記錄乙份在 /etc/ld.so.cache 這個檔案當中。

//todo ldconfig用法

靜態函式庫與動態函式庫的設計

函式庫存放位置 linux應用程式使用的主要函式均放在 lib和 usr lib目錄下,其中採用 so.命名的是動態函式庫,而以 a方式命名的是靜態函式庫。靜態函式庫的特點 程式所要用到的庫函式 在鏈結時全部被copy到程式中。導致的問題 如果有多個程序在記憶體中同時執行,並且使用了相同的函式庫,那...

Linux 下的靜態(函式)庫 動態(函式)庫

不用指定生成.o檔名 預設生成file1.o,file2.o,file3.o ar rv libname.a file1.o file2.o file3.or 將flie1.o,file2,o,file3.o插入archive,如故原先archive中已經存在某檔案,則先將該檔案刪除。v 顯示ar操...

Linux的靜態函式庫和動態函式庫

一 在linux中,有兩種函式庫,以 so字尾命名的是動態函式庫,以 a字尾命名的是靜態函式庫 二 靜態函式庫 1 靜態函式庫是多個目標檔案 o的集合 2 可以使用ar命令 archiver 來生成.a檔案 gcc c part a.c gcc c part b.c ar r libtest.a p...