91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

linux中動態鏈接和靜態鏈接的區別有哪些

發布時間:2022-02-26 10:35:27 來源:億速云 閱讀:248 作者:iii 欄目:建站服務器

這篇文章主要介紹“linux中動態鏈接和靜態鏈接的區別有哪些”,在日常操作中,相信很多人在linux中動態鏈接和靜態鏈接的區別有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”linux中動態鏈接和靜態鏈接的區別有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

區別:1、靜態鏈接的進行是在形成可執行程序前,而動態鏈接的進行則是在程序執行時;2、靜態鏈接庫的代碼裝載速度快,執行速度略比動態鏈接庫快;3、和動態鏈接相比,靜態鏈接生成的可執行文件體積較大。

本教程操作環境:linux5.9.8系統、Dell G3電腦。

linux中動態鏈接和靜態鏈接

編譯鏈接的過程

編譯分為3步,首先對源文件進行預處理,這個過程主要是處理一些#號定義的命令或語句(如宏、#include、預編譯指令#ifdef等),生成*.i文件;然后進行編譯,這個過程主要是進行詞法分析、語法分析和語義分析等,生成*.s的匯編文件;最后進行匯編,這個過程比較簡單,就是將對應的匯編指令翻譯成機器指令,生成可重定位的二進制目標文件。

鏈接的兩種方式

  • 靜態鏈接

  • 動態鏈接

靜態鏈接和動態鏈接兩者最大的區別就在于鏈接的時機不一樣,靜態鏈接的進行是在形成可執行程序前,而動態鏈接的進行則是在程序執行時。

靜態鏈接庫的優點

a):代碼裝載速度快,執行速度略比動態鏈接庫快;

b):只需要保證在開發這段計算機中有正確的.lib文件,再以二進制形式發布程序時不需要考慮用戶的計算機上的.lib文件是否存在版本問題,可以避免DLL地獄等問題。

動態鏈接庫的優點

a) 更加節省內存并減少頁面交換;

b) DLL文件與EXE文件獨立,只要輸出接口不變__即名稱、參數、返回值類型和調用約定不變__,更換DLL文件不會對EXE文件造成任何影響,因而極大地提高了可維護性和可擴展性;

c)不同編程語言編寫的程序只要按照函數調用約定就可以調用同一個DLL函數;

d)適用于大規模的軟件開發,使開發過程獨立、耦合度小,便于不同開發者和開發組織之間進行開發和測試。

不足之處

a)使用靜態鏈接生成的可執行文件體積較大,包含相同的公共代碼,造成浪費;

b)使用動態鏈接庫的應用程序不是自完備的,它依賴的DLL模塊也要存在,如果使用載入時動態鏈接,程序啟動時發現DLL不存在,系統將終止程序并給出錯誤信息。而使用運行時動態鏈接,系統不會終止,但由于DLL中的導出函數不可用,程序會加載失敗;速度比靜態鏈接慢。當某個模塊更新后,如果新模塊與舊的模塊不兼容,那么那些需要該模塊才能運行的軟件,統統撕掉。這在早期Windows中很常見。

到此,關于“linux中動態鏈接和靜態鏈接的區別有哪些”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

小金县| 交城县| 岑溪市| 霸州市| 井冈山市| 东阳市| 伊川县| 胶州市| 化隆| 兴海县| 修武县| 襄汾县| 昭平县| 竹山县| 中西区| 同江市| 隆昌县| 台中县| 响水县| 宁陵县| 金昌市| 凌源市| 合肥市| 合山市| 淮滨县| 黑水县| 钟山县| 清流县| 集贤县| 涿鹿县| 喀喇沁旗| 额尔古纳市| 赤峰市| 红桥区| 盈江县| 年辖:市辖区| 正宁县| 永康市| 乌什县| 竹溪县| 新营市|