靜態鏈結與動態鏈結的區別
在c語言中,我們知道要生成可執行檔案,要經歷預編譯、編譯、彙編、鏈結,在鏈結過程中,靜態鏈結和動態鏈結就出現了區別。靜態鏈結的過程就已經把要鏈結的內容已經鏈結到了生成的可執行檔案中,就算你在去把靜態庫刪除也不會影響可執行程式的執行;而動態鏈結這個過程卻沒有把內容鏈結進去,而是在執行的過程中,再去找要鏈結的內容,生成的可執行檔案中並沒有要鏈結的內容,所以當你刪除動態庫時,可執行程式就不能執行。動態鏈結生成的可執行檔案要比靜態鏈結生成的檔案要小一些。
動態庫與靜態庫的區別
就不設定環境變數的情況下來說
動態庫一般都會存在/usr/lib/ 目錄下;而靜態庫可以在任何目錄下,只要你第一次鏈結的時候,用絕對路徑去鏈結就行了,之後再刪除,是不會影響你的生成的執行檔案的。如若可以設定環境變數的話,動態庫和靜態庫可以放置到你想放的任何地方,只是動態庫需要設定環境變數,而靜態庫鏈結的時候需要絕對路徑,但一般來說,動態庫都會放在放在/usr/lib,應該大家都習慣了,這樣也方便尋找,而當鏈結動態庫的時候預設的路徑就是/usr/lib。
靜態鏈結和動態連線的優缺點
靜態連線就是把外部函式庫,拷貝到可執行檔案中。優點 適用範圍比較廣,不用擔心使用者機器缺少某個庫檔案 缺點 安裝包會比較大,而且多個應用程式之間,無法共享庫檔案。動態連線的做法正好相反,外部函式庫不進入安裝包,只在執行時動態引用。優點 安裝包會比較小,多個應用程式可以共享庫檔案 缺點 使用者必須事先...
靜態鏈結和動態鏈結區別
一 靜態鏈結 鏈結程式搜尋乙個或者多個庫檔案 標準庫.lib 直到在某個庫中找到了含有所引用函式的物件模組,然後鏈結程式把這個物件模組拷貝到結果可執行檔案 exe 中。鏈結程式維護對該函式的所有引用,使它們指向該程式中現在含有該函式拷貝的地方。二 動態鏈結 鏈結程式也是搜尋乙個或者多個庫檔案 輸入庫...
靜態庫,靜態鏈結,動態鏈結 的區別
遺憾地說 除了ender說的 靜態庫在程式執行時就會裝入記憶體,而動態庫在呼叫的時候才裝入!是正確的外,其他觀點都有偏頗之處甚至是錯誤的。我的感覺是,大家受mfc的影響太深了,而沒有看到事情的本質。首先糾正所謂 靜態連線就是把需要的庫函式放進你的exe之中 的說法。在真實世界中,有三個概念 use ...