導航:首頁 > 源碼編譯 > 動態庫能否編譯成靜態

動態庫能否編譯成靜態

發布時間:2025-04-26 14:06:36

① 如何編譯C/Fortran動態/靜態鏈接庫

首先,傳統的編譯,也就是
靜態編譯
是把
源文件
翻譯成目標文件,這個是一次性過程,也就是你所謂的靜態編譯。
後來的Java和.NET等語言,首先編譯成中間形式,然後運行過程中根據需要編譯成本地代碼(注意這個過程不是一次性的,下次運行重新編譯),這個就是JIT(即時編譯)技術,從即時編譯發展出了動態編譯技術
————————————
(傳統的)編譯完成後,像C/C++、Fortran、匯編等語言,可以把多個目標文件合並到一個
庫文件
中,這個就是靜態庫。比如常說的
庫函數
printf就是libc裡面的函數。
如果有了啟動函數(main),main裡面使用了printf,就可以通過
靜態鏈接
技術,從libc中提取出printf所在的文件加入到可執行文件中,如果printf還需要其它函數,就繼續搜索並加入列表,直到形成一個
閉包
。這個就是靜態鏈接。
可是靜態鏈接有個明顯的缺點,如果每個程序都需要printf,那麼printf這個函數的代碼就會同時存在在每個程序中,這樣也太佔地方了吧。所以發明了動態連接技術,其實有兩種形式。無論哪一種,都是首先記錄下需要調用printf這個函數以及所在的
動態庫
,等到運行的時候再載入動態庫,從動態庫中找到真正的printf去執行。
由於,
動態鏈接
技術需要一些額外的信息,傳統的靜態庫是不具備的,這些額外信息主要是重復載入和卸載時所需要的一些代碼,因此需要
動態鏈接庫

② QT中怎麼靜態編譯,靜態編譯的步驟是什麼。

Qt採用編譯的方式安裝的時候,配置中默認的編譯方式是動態編譯的,但是有時候你編寫的程序要發布出去,帶很多動態庫文件是很繁瑣的,此時就需要靜態編譯你的程序,Qt要實現靜態編譯必須庫文件也是靜態編譯的,所以在此介紹一下qt如何來進行靜態編譯第一步:下載源碼包Qt/X11版本:qt-x11-opensource-src-4.5.2.tar.gz第二步:解壓縮tarzxvfqt-x11-opensource-src-4.5.2.tar.gz第三步:進入到剛才解壓縮後的文件夾下並進行配置,如下./configure-release-platformwin32-msvc2008-static-nomakeexamples-nomakedemos-no-qt3support-no-scrip
...
by
fengyetang
2010-07-04
回復
(0)

閱讀全文

與動態庫能否編譯成靜態相關的資料

熱點內容
車子大本解壓後多久可以過戶 瀏覽:329
單片機軟體的編譯過程 瀏覽:431
當地服務商dns伺服器地址 瀏覽:425
星辰影視下載文件夾 瀏覽:602
35X簡便演算法 瀏覽:24
硬碟加密不加密區別 瀏覽:958
築業資料加密鎖哪裡有賣的 瀏覽:682
javaforeach數組 瀏覽:368
安卓如何開發區塊鏈 瀏覽:601
如何封裝自解壓的exe 瀏覽:799
雲主機雲伺服器怎樣收費 瀏覽:925
簡述編譯程序各部分的功能 瀏覽:720
ij編譯器下載 瀏覽:513
vmware鏈接區域網伺服器地址 瀏覽:425
為什麼安卓耳機轉接不可數據傳輸 瀏覽:811
高德地圖總是顯示離線數據解壓中 瀏覽:881
淘二手車最好的app是哪個 瀏覽:121
一句話描述加密貨幣的前100名 瀏覽:787
python二維集合賦值 瀏覽:147
android圖形化開發 瀏覽:949