vs編譯靜態(tài)庫(kù) QtCreator怎樣設(shè)置才能實(shí)現(xiàn)靜態(tài)編譯?
QtCreator怎樣設(shè)置才能實(shí)現(xiàn)靜態(tài)編譯? Qt默認(rèn)的編譯方式是動(dòng)態(tài)編譯的,但是有時(shí)候編寫(xiě)的程序要發(fā)布出去,帶很多動(dòng)態(tài)庫(kù)文件是很繁瑣的,此時(shí)就需要靜態(tài)編譯程序,Qt要實(shí)現(xiàn)靜態(tài)編譯必須庫(kù)文件也是靜態(tài)
QtCreator怎樣設(shè)置才能實(shí)現(xiàn)靜態(tài)編譯?
Qt默認(rèn)的編譯方式是動(dòng)態(tài)編譯的,但是有時(shí)候編寫(xiě)的程序要發(fā)布出去,帶很多動(dòng)態(tài)庫(kù)文件是很繁瑣的,此時(shí)就需要靜態(tài)編譯程序,Qt要實(shí)現(xiàn)靜態(tài)編譯必須庫(kù)文件也是靜態(tài)編譯的,可以用這個(gè)命令編譯靜態(tài)庫(kù):
1.將C:Qt2010.05qtmkspecswin32-g
qmake.conf
文件中的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-reloc2.在開(kāi)始菜單里找到Qt Command Prompt并運(yùn)行,輸入命令: configure -static -debug-and-release -no-exceptions -L "C:Qt2010.05qtinclude" -L "C:Qt2010.05qtlib" -L指定一下路徑,防止用到vc的頭文件 選擇開(kāi)源:O;選擇license:y;
3.上一條命令運(yùn)行成功后再輸入命令: mingw32-make sub-src 等1 ~3 小時(shí)可能就運(yùn)行完了 完成后就可以了。
如何靜態(tài)編譯發(fā)布Qt應(yīng)用程序?
如果你說(shuō)的是Qt程序的話(huà),靜態(tài)編譯就得自行從源碼開(kāi)始編譯Qt靜態(tài)庫(kù),官網(wǎng)預(yù)編譯的版本是不包含靜態(tài)庫(kù)的。
這個(gè)很復(fù)雜,請(qǐng)參考qt-everywhere-opensource 中提供的編譯幫助。注意如果使用miongw的話(huà),gcc版本最好不要是4.6.2。這個(gè)版本比較特殊,但是它是mingw官方版的最新打包版本。如果你說(shuō)的是非qt庫(kù)依賴(lài)的話(huà),有兩種mingw和vs,前者有部分發(fā)行版默認(rèn)去除了dll依賴(lài),直接連接的靜態(tài)庫(kù),后者非常不推薦使用靜態(tài)庫(kù),畢竟它加載的是系統(tǒng)常用dll,基本上所有系統(tǒng)都是推薦安裝的運(yùn)行時(shí)環(huán)境,用靜態(tài)庫(kù)吃力不討好。