Linux 庫檔案(針對於Linux)

2021-09-25 13:35:24 字數 936 閱讀 8544

1) 本質上來說庫是一種可執行**的二進位制形式,可以被作業系統載入記憶體執行。提前寫好的某些功能的實現(函式)的集合。庫是提供給使用者使用的,不能單獨執行。實現庫檔案時都必須沒有main函式。

2 ) 庫的種類:linux下的庫有兩種:windows的靜態庫的擴充套件名為.lib ;動態庫為 .dll

linux的靜態庫擴充套件名為 .a;動態庫為.so.二者的不同點在於**被載入的時刻不同。

程式在鏈結的過程當中,鏈結器從庫檔案中取得所需**,複製到生成的可執行檔案當中。因此,靜態庫是在程式的鏈結階段被複製到程式當中,和程式的執行過程沒有關係。

共享庫的**是在可執行程式執行時才載入記憶體的,在編譯過程中僅簡單的引用,因此**體積較小。當乙個程式使用共享庫時,它的鏈結方式是這樣的:程式本身不再包含函式**,而是引用執行時可訪問的共享**。當編譯好的程式被裝載到記憶體中執行時,函式引用被解析並產生對共享庫的呼叫,如果有必要,共享庫才被載入到記憶體中。

引數:ar:靜態函式庫建立的命令

-c :create的意思

-r :replace的意思,表示當前插入的模組名已經在庫中存在,則替換同名的模組。如果若干模組中有乙個模組在庫中不存在,ar顯示乙個錯誤資訊,並不替換其他同名的模組。預設的情況下,新的成員增加在庫德結尾處。

-fpic:產生**位置無關**

動態庫: 在程式執行階段被系統動態載入到記憶體中供程式使用。

區別:靜態庫的可執行檔案中包含了庫**的乙份完整的拷貝,因此當它被多次使用時就會有多分沒用的拷貝在記憶體中,所以比較佔記憶體; 動態庫只需要載入一次動態庫,不同的程式可以得到記憶體當中相同的動態庫的副本,因此節省很多記憶體

python獲取檔案真實鏈結,針對於302返回碼

使用模組requests 方式 如下 print r.headers location 擴充套件 設定屬性 allow redirects true 則head方式會自動解析重定向鏈結,requests.get 方法的allow redirects預設為true,head方法預設為false 使用r...

針對於iMatrix平台的流程引擎見解

最近在網上看到開源的imatrix開發平台,看到有瀏覽器版本的流程設計器功能,自己研究了一下它和流程引擎的結合使用原理 首先看一下imatrix平台的xml和jbpm原生的xml有什麼區別?流程屬性 環節屬性和流向屬性生成xml的原理基本一致,生成的extend元素為平台自己新增的元素,通過這些擴充...

常用工具類 僅針對於JAVA

post請求引數通過body傳入 post請求引數通過body傳入 異常丟擲版本 拼接url引數 param url param list return public static string paramurl string url,listlist return method.geturi to...