當前位置:首頁 » 編程軟體 » 動態庫可以重新編譯成靜態庫

動態庫可以重新編譯成靜態庫

發布時間: 2025-03-29 12:27:18

㈠ Qt Creator 怎樣設置才能實現靜態編譯

Qt默認的編譯方式是動態編譯的,但是有時候你編寫的程序要發布出去,帶很多動態庫文件是很繁瑣的,此時就需要靜態編譯你的程序,Qt要實現靜態編譯必須庫文件也是靜態編譯的,可以用這個命令編譯靜態庫:

1.將C:\Qt\2010.05\qt\mkspecs\win32-g++文件中的QMAKE_LFLAGS = -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc

改為

QMAKE_LFLAGS = -static -enable-stdcall-fixup -Wl,-enable-

auto-import -Wl,-enable-runtime-pseudo-reloc

2.在開始菜單里找到Qt Command Prompt並運行,輸入命令: configure -static -debug-and-release -no-exceptions -L "C:\Qt\2010.05\qt\include" -L "C:\Qt\2010.05\qt\lib"

-L指定一下路徑,防止用到vc的頭文件

選擇開源:O;選擇license:y;

3.上一條命令運行成功後再輸入命令: mingw32-make sub-src

等1 ~3 小時可能就運行完了 完成後就ok了。。。

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

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

熱點內容
騰訊雲伺服器有沒有獨立ip 發布:2025-04-01 01:42:46 瀏覽:526
考演算法嗎 發布:2025-04-01 01:41:20 瀏覽:810
sqlserver數據頁 發布:2025-04-01 01:40:25 瀏覽:765
mingw靜態編譯qt 發布:2025-04-01 01:37:14 瀏覽:901
腳本性 發布:2025-04-01 01:35:52 瀏覽:298
ftpweb管理 發布:2025-04-01 01:30:00 瀏覽:566
安卓imei儲存在哪裡 發布:2025-04-01 01:29:59 瀏覽:679
動態調節演算法 發布:2025-04-01 01:21:32 瀏覽:706
視頻儲存空間不夠切換為緩存模式 發布:2025-04-01 01:21:29 瀏覽:278
libevlinux編譯 發布:2025-04-01 01:09:12 瀏覽:66