dll檔案和 so檔案

2021-08-08 19:52:29 字數 572 閱讀 6278

記得很早之前有乙個很流行的病毒,就是以.dll為字尾的檔案製作而成,當時只是通過微軟更新的系統,修復漏洞就沒管了,對當時mac系統沒受到攻擊也沒有在意,只知道是說這個是windows的漏洞,所以mac系統都沒事。還有一次接觸dll是在剛開始使用tomcat的時候,執行tomcat報錯,但是可以成功啟動tomcat,當時覺得非常奇怪,就上網查,說缺少乙個dll檔案,然後當時就去查了下dll檔案是什麼,但是也僅僅限於此而已,後來也就扔下不管了。直到今天因為工作的問題,才又一次去查dll相關的東西,所以,這一次就不能再和以前一樣只是看一眼就扔了,必須得記錄下來。

今天有乙個功能的實現需要用到ca證書,因為沒有接觸過ca證書,就直接上伺服器上去取了相關檔案(專案在windows下開發,在linux上部署)。然後放到本地環境。接著做單元測試的時候,很好,直接gg,報錯:cannot find ***.dll,找不到jni。

我一看dll,這不是我以前看過的嘛,動態鏈結庫檔案嘛,怎麼會找不到呢,然後找到相關的檔案路徑,一看,蒙蔽了,路徑下壓根沒有dll結尾的檔案呀,什麼鬼呀。只有幾個so為字尾的檔案,然後上網搜尋,才發現.so是linux下使用的動態鏈結庫的檔案。那麼接下來,就開始今天的正題了。

a 檔案 和 so 檔案

所謂靜態鏈結是指把要呼叫的函式或者過程鏈結到可執行檔案中,成為可執行檔案的一部分。當多個程式都呼叫相同函式時,記憶體中就會存在這個函式的多個拷貝,這樣就浪費了寶貴的記憶體資源。so檔案是共享庫檔案 動態鏈結 動態鏈結所呼叫的函式 並沒有被拷貝到應用程式的可執行檔案中去,而是僅僅在其中加入了所呼叫函式...

lib檔案和dll檔案

什麼是lib檔案,lib和dll的關係如何 1 lib是編譯時需要的,dll是執行時需要的。如果要完成源 的編譯,有lib就夠了。如果也使動態連線的程式執行起來,有dll就夠了在開發和除錯階段,當然最好都有。2 一般的動態庫程式有lib檔案和dll檔案。lib檔案是必須在編譯期就連線到應用程式中的,...

linux下生成 so檔案和 a檔案

test.h 1 ifndef test h 2 define test h 34 void testa 5void testb 67 endif test a.cpp 1 include 2 include test.h 3 4void testa 5 test b.cpp 1 include 2...