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

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

發布時間: 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去執行。
由於,
動態鏈接
技術需要一些額外的信息,傳統的靜態庫是不具備的,這些額外信息主要是重復載入和卸載時所需要的一些代碼,因此需要
動態鏈接庫

熱點內容
華為7102配置路由器怎麼安裝 發布:2025-04-30 10:31:14 瀏覽:557
電腦伺服器不在桌面上顯示出來嗎 發布:2025-04-30 10:26:05 瀏覽:128
360瀏覽器63緩存 發布:2025-04-30 10:15:09 瀏覽:278
oracle表空間sql 發布:2025-04-30 10:15:08 瀏覽:312
未上傳年報 發布:2025-04-30 10:01:17 瀏覽:876
一般qq密碼設置成什麼 發布:2025-04-30 10:01:13 瀏覽:980
linuxshell編程指南 發布:2025-04-30 09:42:02 瀏覽:246
英朗4月銷量最多的是哪個配置 發布:2025-04-30 09:23:36 瀏覽:283
android源碼閱讀 發布:2025-04-30 09:15:59 瀏覽:142
華為升級文件夾 發布:2025-04-30 09:14:54 瀏覽:65