站長資訊網
        最全最豐富的資訊網站

        linux中動態鏈接和靜態鏈接的區別是什么

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

        linux中動態鏈接和靜態鏈接的區別是什么

        本教程操作環境: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中很常見。

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 蜜臀久久99精品久久久久久小说| 亚洲精品国产福利一二区| 亚洲国语精品自产拍在线观看| 日韩三级精品| 51久久夜色精品国产| 国产精品自在线拍国产| 日本Aⅴ大伊香蕉精品视频| Xx性欧美肥妇精品久久久久久| 久久精品蜜芽亚洲国产AV| 国产精品手机在线观看你懂的| 成人午夜精品网站在线观看 | 91精品国产人成网站| 久久99精品久久只有精品| 天天视频国产精品| 久久精品无码一区二区三区免费 | 精品爆乳一区二区三区无码av| 久久久亚洲精品蜜桃臀| 97久人人做人人妻人人玩精品| 国产精品亚洲精品| 国产精品无码无片在线观看| 亚洲精品自产拍在线观看| 无码日韩精品一区二区人妻| 精品a在线观看| 国产精品爽爽ⅴa在线观看| 91精品无码久久久久久五月天| 国产精品666| 国产成人精品日本亚洲网站| 午夜精品射精入后重之免费观看 | 99在线热播精品免费99热| 国语自产精品视频在线区| 久久这里只有精品18| 欧洲精品久久久av无码电影| 中文字幕日本精品一区二区三区| 久久亚洲国产精品123区| 久久久久国产成人精品亚洲午夜| 精品国内自产拍在线观看 | 国产成人精品综合网站| 99久久久精品| 久久99久久99小草精品免视看| 久久96国产精品久久久| 欧美一区二区精品|