-
靜態鏈接與動態鏈接的區別
在C語言中,我們知道要生成可執行檔案,要經歷預編譯、編譯、匯編、鏈接,在鏈接程序中,靜態鏈接和動態鏈接就出現了區別,靜態鏈接的程序就已經把要鏈接的內容已經鏈接到了生成的可執行檔案中,就算你在去把靜態庫洗掉也不會影響可執行程式的執行;而動態鏈接這個程序卻沒有把內容鏈接進去,而是在執行的程序中,再去找要鏈接的內容,生成的可執行檔案中并沒有要鏈接的內容,所以當你洗掉動態庫時,可執行程式就不能運行,動態鏈接生成的可執行檔案要比靜態鏈接生成的檔案要小一些, -
動態庫與靜態庫的區別
就不設定環境變數的情況下來說
動態庫一般都會存在/usr/lib/ 目錄下;而靜態庫可以在任何目錄下,只要你第一次鏈接的時候,用絕對路徑去鏈接就行了,之后再洗掉,是不會影響你的生成的執行檔案的,如若可以設定環境變數的話,動態庫和靜態庫可以放置到你想放的任何地方,只是動態庫需要設定環境變數,而靜態庫鏈接的時候需要絕對路徑,但一般來說,動態庫都會放在放在/usr/lib,應該大家都習慣了,這樣也方便尋找,而當鏈接動態庫的時候默認的路徑就是/usr/lib,
各自的優缺點:
1、靜態鏈接庫執行速度比元件快,(執行程序不需要找鏈接的內容)
2、元件更節省記憶體,(未寫入要鏈接的內容)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/183351.html
標籤:其他
上一篇:UniswapV2周邊合約學習(二)-- UniswapV2Router02.sol(上)
下一篇:區塊鏈上智能合約的講解
