精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

淺談 Qt 靜態編譯

移動開發
本文要講解的是Qt 靜態編譯,Qt中默認的應該是動態編譯,那么本文就淺淡的介紹一下靜態編譯,先來看內容。

Qt 靜態編譯是本文要介紹的內容,首先,你應該該知道什么叫靜態引用編譯、什么叫動態引用編譯。我這里只是簡單的提提,具體的可以google一下。

動態引用編譯,是指相關的庫,以dll的形式引用庫。動態編譯的Exe程序尺寸比較小,因為相關的庫都沒有包含進來。當然,程序發布的時候,還要把相關的庫也一并發布出去。

靜態引用編譯,是指把相關的庫也一并引入Exe文件。這是程序的尺寸就會很大,不過,程序發布就會變得簡單很多。

其次,你可能會注意到我標題上寫了“真正”這兩個字。為什么我要強調真正這兩個字呢?因為使用VC編譯的C或者C++程序,都需要相關的C runtime庫才能運行。如果你是VC6,相應的庫就叫MSVCR,如果是vc2005,那就是MSVCR08,vc2008就是MSVCR09。我這里假設你安裝的是VC2005,請進入如下目錄:${VS Install Dir}\VC\redist\x86 和 ${System Driver}:\windows\WinSxS,你就會發現下面有很多很多的庫。沒錯,這里相當一部分就是C runtime庫。

好了,言歸正傳,首先,我們用VC2005寫了一個不使用MFC的存C或者C++的程序,怎么發布給最終用戶呢?有兩個方法:

(1)靜態引用C runtime庫:打開“項目”->“XXX屬性”->“配置屬性”->“C/C++”->“代碼生成”->“運行時庫”。看到了吧?這里一共有四個選項,其中MT開頭的是靜態引用,MD開頭的是動態引用,d結尾的是Debug調試版本,沒有d的是Release發布版本,所以就一共有四個選項。我們選擇/MT,然后編譯程序(生成的程序應該不小),把這個程序發給用戶,然后用戶就可以直接運行了。
(2)動態引用C runtime庫:跟上面差不多,不過是用/MD選項編譯(程序應該只是幾十K),然后發給用戶。這時,用戶是不能運行這個程序的,會報個什么程序引導失敗,重裝系統可能會修復問題之類的提示。這是我們還要把C runtime庫一并發過去。把${VS Install Dir}\VC\redist\x86\Microsoft.VC80.CRT下的所有文件(注意,是所有,包括那個.manifest文件)發給用戶,用戶把這些文件放在我們的程序的同一個目錄,然后再次運行,這時,程序就起來了(VC2005之后,C runtime庫的引用改變了很多,建議google一下)。

說完C runtime庫,就來說說Qt庫了,這里我假設你用的是***的Qt4.4.3。我們編譯Qt的時候,configure.exe有很多參數,大家可以configure.exe --help來看看,其中,默認生成的Qt庫(這里默認的意思,是指沒有加-share或者-static參數)是動態引用的,也就是說,編譯完后,在QtDir的lib目錄下除了一大堆lib文件外,還有一大堆的dll文件。我們發布我們的Exe程序的時候,需要把相應的Qt庫的Dll也一并發給用戶。

按照Qt的安裝手冊和網上一大堆大牛的說法,加上-static參數后,Qt就可以靜態編譯了,也就是說,lib目錄下之后一大堆lib文件,沒有dll文件。是否?我們做個試驗:

首先是設置變量:

  1. set QTDIR=%CD%  
  2. set PATH=%PATH%;%QTDIR%\bin  
  3. set QMAKESPEC=win32-msvc2005  
  4. "C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat"" x86 

配置makefile:

  1. configure -release -static -fast -qt-sql-odbc -qt-sql-sqlite -no-webkit 

(這里的參數就不一一說明了,建議讀者打入--help認真查查,特別注明一下,之所以-no-webkit,是因為新版的qt加上了Webkit,而這個東東編譯的時候非常耗時間,編譯后也很大,有100多M,并且我基本不會用到這個東東,所以忽略它)

然后

 

  1. cd src  (我之所以直接進入src目錄nmake,是因為不想make其它不相干的模塊,節省時間)  
  2. nmake 

漫長的等待之后,我們發現lib下果然只有一大堆lib文件了,而且每個lib文件的尺寸都在M以上,似乎已經成功了。然后我們在安裝了qt-vsintegration的VC2005新建一個Qt工程,然后編譯一個release版本。編譯的時候,問題來了。我們選擇/MD選項,這時鏈接就可以通過,但如果我們想要用/MT選項來使用靜態C runtime庫,就會報一大堆某某函數鏈接重復之類的錯誤。經驗告訴我們,之所以不能使用/MT來編譯,是因為另外一個庫——Qt庫使用了另外一種引用方式/MD(原則上來說,一個程序里面的所有模塊,都應該使用同一種引用方式,具體可以google一下)。很顯然,我們編譯的所謂靜態Qt程序,一樣要背著微軟的C Runtime庫到處跑,還不夠“真正”的靜態。

怎么才能做成完全的靜態呢?記得之前編譯wxWidgets的時候,它除了有SHARED=0或者1的選項之外,還有一個RUNTIME_LIBS = static or dynamic的選項,很顯然,這個RUNTIME_LIBS的選項就是我們想要的選項。不過我翻遍了Qt的安裝手冊以及網上大牛的文章,都沒有提及這個問題,我當時心里就覺得奇怪,難道沒人遇到過這個問題?我又認真翻查了configure.exe的help,也沒有類似的選項,問題一下就僵住了。

回憶一下剛才我們編譯的時候,屏幕上調用cl.exe編譯的時候,有這樣一個參數:cl.exe .... -MD .... xxx.cpp,眼利的朋友一下就會發現,這個-MD就是c runtime動態引用的選項。然而,怎么把這個-MD改成-MT呢?我們翻開剛才我們編譯的qt的src目錄下,隨便找個目錄進去,打開Makefile.Release,我們就會看到CFLAGS=-MD ........,沒錯,就是這里。我們只要在這里把-MD改成-MT,就會使用靜態c runtime庫編譯Qt了。我們當然不可能一個一個地替換這些makefile,關鍵是找出生成這些參數的模板文件。很顯然,它肯定在qt的mkspecs目錄,我們直奔win32-msvc2005目錄,果然找到一個qmake.conf文件,果然找到一個QMAKE_CFLAGS_RELEASE = -O2 -MD,把這里的-MD換成-MT,然后清理一下剛才的生成的配置信息(網上又說用nmake confclean來清空,不過我沒有成功,貌似是使用了-fast參數的緣故,不過沒關系,把這個目錄刪掉,重新解壓一份源代碼就可以了,然后把win32-msvc2005目錄下的qmake.conf的-MD換成-MT),重新

  1. configure -release -static -fast -qt-sql-odbc -qt-sql-sqlite -no-webkit 

然后nmake

又是漫長的等待。不過我們不要干等,看看出來的編譯命令,cl.exe .... -MT .... xxx.cpp,果然變成靜態c運行庫了。

編譯完之后,像剛才那樣,在VC2005建一個Qt的工程,然后用/MT這個選項編譯,OK,編譯成功,出來的Exe文件大小是4.95M,貌似已經把C runtime庫嵌進來了。然后把這個程序放到用戶那里運行,OK單個Exe文件運行成功了。

至此,編譯真正靜態Qt程序試驗完成。總結一下整個過程,首先是要有耐性,因為編譯一次Qt都至少兩個小時(當然,用一些技巧,例如-fast,-no-qmake,只編譯src等等的技巧可以縮短很多時間),我來回就編譯了五次Qt;其次熟悉一些常見的編譯、鏈接的錯誤,例如一見到XXX庫已經引用之類的錯誤,馬上就聯想到應該是引用不同的庫導致的;***,要善于發現問題,查找問題。

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-06-21 16:40:58

Qt 靜態編譯

2011-06-21 17:01:44

Qt 靜態 編譯

2011-08-29 09:33:24

WindowsQt庫靜態

2011-07-05 10:44:51

Qt Sqlite 靜態編譯

2011-06-29 17:00:26

QT 靜態編譯 Debug

2011-06-28 15:37:34

Qt 內存

2011-07-04 15:30:24

Qt 布局 GridLayout

2011-07-05 10:22:44

Qt Sqlite

2011-06-23 09:54:00

VS2010 Qt 4.7.2 Qt

2011-06-15 16:50:09

Qt 模塊

2011-06-15 10:08:01

Qt CVS

2011-06-28 17:21:50

QT UI designer

2011-06-30 11:23:29

Qt 線程

2011-06-29 16:34:11

Qt 子線程 線程

2011-06-13 10:03:19

Qt 多線程 編程

2011-09-07 16:36:00

Qt Widget

2011-06-08 15:27:24

QT QT 4.5 編譯

2011-06-09 15:18:07

QT 編譯

2011-06-28 14:02:34

QT ARM

2011-06-10 16:44:17

Qt 瀏覽器
點贊
收藏

51CTO技術棧公眾號

超碰免费97在线观看| 亚洲成人生活片| 激情亚洲影院在线观看| 国产日韩三级在线| 91精品综合视频| 久草视频中文在线| 国产91精品对白在线播放| 欧美日韩中文国产| 欧美午夜性视频| av电影在线网| 暴力调教一区二区三区| 国产精品激情av电影在线观看| 日韩在线一卡二卡| 日韩欧美美女在线观看| 欧美日韩激情在线| 成熟了的熟妇毛茸茸| 日本在线看片免费人成视1000| 成人免费毛片嘿嘿连载视频| 国产精品高潮呻吟视频| 国产亚洲成人av| 日韩精品91| 亚洲美女激情视频| 人妻互换一二三区激情视频| 99精品在免费线偷拍| 午夜私人影院久久久久| 中文字幕精品一区日韩| 久久精品蜜桃| 成人h动漫精品一区二区| 国产精品视频1区| 西西44rtwww国产精品| 亚洲国产精品久久久天堂| 亚洲日韩第一页| 中文字幕精品视频在线| 亚洲成人五区| 91麻豆精品国产自产在线观看一区| 噜噜噜久久亚洲精品国产品麻豆| av在线免费网站| 国产精品福利一区二区三区| 欧美亚洲丝袜| 天堂网www中文在线| 成人一级黄色片| 91亚洲va在线va天堂va国 | 亚洲一区二区综合| 一本二本三本亚洲码| av网站无病毒在线| 国产日韩亚洲欧美综合| 人偷久久久久久久偷女厕| 亚洲色偷精品一区二区三区| 成人va在线观看| 国产欧美日韩在线播放| 内射无码专区久久亚洲| 国产不卡视频在线观看| 99精品99久久久久久宅男| a天堂在线观看视频| 国产一区二区h| 91久久久久久久一区二区| 97精品人妻一区二区三区在线| 天堂影院一区二区| 性欧美在线看片a免费观看| 久草综合在线视频| 欧美日韩国产亚洲一区| 欧美激情综合色综合啪啪五月| 激情五月少妇a| 欧美性色综合| 97激碰免费视频| 99热在线观看免费精品| 久久久久.com| 国产精品一区二区3区| 国产一区二区三区四区视频 | 国产成人精品视频在线观看| 国产一级片免费在线观看| 三级欧美韩日大片在线看| 日韩免费在线免费观看| 免费在线观看av的网站| 激情六月婷婷久久| wwwxx欧美| 婷婷综合激情网| 国产视频亚洲色图| 香蕉精品视频在线| 欧美aaa免费| 精品久久久久久久大神国产| 日韩在线xxx| 国产黄色精品| 精品国产电影一区二区| 免费a级黄色片| 国产成人精品一区二区免费看京 | 5858s免费视频成人| 波多野结衣中文字幕在线播放| 国产色噜噜噜91在线精品| 日韩精品在线观看一区| 在线观看亚洲大片短视频| 亚洲精品成人无限看| 欧美黄色小视频| 日本中文字幕第一页| 麻豆视频一区二区| 国产精品theporn88| 国产三级视频在线| 一区二区高清在线| 99福利在线观看| 日韩一区二区三区四区五区| 亚洲精品一区二区三区四区高清| 亚洲综合网在线观看| 91精品亚洲| 欧美一区二区三区四区在线| 97caocao| 26uuu精品一区二区| 自拍视频一区二区三区| 擼擼色在线看观看免费| 欧美高清你懂得| 成人手机在线免费视频| 久久精品久久久| 日韩女优人人人人射在线视频| 国产情侣自拍小视频| 久久久国产精品不卡| 日韩第一页在线观看| 性欧美18一19sex性欧美| 日韩亚洲欧美在线| 国产极品视频在线观看| 99视频+国产日韩欧美| 91中文字幕在线| 韩日在线视频| 欧美日韩人人澡狠狠躁视频| 五月天六月丁香| 激情五月色综合国产精品| 久久久久久亚洲精品中文字幕| 亚洲一区中文字幕在线| 久久日一线二线三线suv| 国产自产在线视频| 国产一区二区av在线| 中文字幕日韩高清| 国产三级av片| 成人免费观看视频| 欧美 日韩 国产精品| 91国内外精品自在线播放| 亚洲精品在线看| 日韩大片免费在线观看| 国产不卡一区视频| 喜爱夜蒲2在线| 99综合久久| 中文字幕亚洲综合| 中文字幕欧美色图| 国产欧美日本一区二区三区| 欧美三级一级片| 欧美一级三级| 性欧美亚洲xxxx乳在线观看| 囯产精品久久久久久| 亚洲一区视频在线观看视频| 黄色片免费网址| 一区二区电影| 亚洲自拍偷拍视频| 中中文字幕av在线| 欧美一区二区三区色| 成人免费精品动漫网站| 激情五月激情综合网| 国产精品99久久久久久大便| 国产精品99精品一区二区三区∴| 色悠悠久久久久| 伊人久久国产精品| 亚洲欧美自拍偷拍色图| 一级做a爱视频| 久久久久久免费视频| 91网站免费观看| 欧美极品少妇videossex| 精品精品欲导航| 国产乡下妇女做爰视频| av动漫一区二区| 欧美精品99久久| 免费精品国产| 国产精品影片在线观看| 免费网站看v片在线a| 日韩一区二区电影网| 欧美日韩偷拍视频| 91论坛在线播放| 日韩亚洲在线视频| 欧美电影免费播放| 91pron在线| 国产美女高潮在线| 尤物99国产成人精品视频| 一个人看的www日本高清视频| 亚洲四区在线观看| fc2成人免费视频| 美女视频一区免费观看| 亚洲午夜在线观看| 亚洲精品aⅴ| 5566成人精品视频免费| 国产69久久| 日韩精品一区二区在线| 91精品国产乱码在线观看| 国产亚洲综合在线| 佐山爱在线视频| 午夜亚洲精品| 永久域名在线精品| 日本亚洲不卡| 成人夜晚看av| 性欧美18~19sex高清播放| 在线日韩第一页| 国产 日韩 欧美 综合| 欧美视频中文一区二区三区在线观看| www.超碰在线观看| 久久综合九色欧美综合狠狠| 日本精品一区在线| 久久xxxx| 免费网站在线观看视频| 欧美精品久久久久久| 国产精品国模大尺度私拍| 先锋欧美三级| 高清视频欧美一级| 免费网站成人| 亚洲免费人成在线视频观看| av官网在线观看| 欧美性一级生活| 伊人久久综合视频| 亚洲免费看黄网站| 欧美 日韩 国产 成人 在线观看| 国产黄色精品视频| 亚洲一级片网站| 亚洲一区区二区| 免费的一级黄色片| 久久婷婷蜜乳一本欲蜜臀| 久久66热这里只有精品| 日本一区二区三区播放| 国产精品久久久久久久久久| 交100部在线观看| 欧美黑人性生活视频| 国产美女福利在线| 在线日韩欧美视频| 免费在线稳定资源站| 精品久久五月天| 国产精品女人久久久| 在线观看日韩精品| 色婷婷av国产精品| 婷婷亚洲久悠悠色悠在线播放 | 欧美日韩激情美女| 欧美精品一级片| 亚洲日本电影在线| 天堂网中文在线观看| 久久精品视频在线免费观看| 日韩片在线观看| 99在线热播精品免费| 美女黄色一级视频| 国产1区2区3区精品美女| 捷克做爰xxxⅹ性视频| 韩国一区二区在线观看| www.久久av.com| 另类小说欧美激情| 艹b视频在线观看| 另类人妖一区二区av| 亚洲成色www.777999| 日韩主播视频在线| 国产成人av影视| 久久亚洲美女| 蜜桃免费在线视频| 青青青爽久久午夜综合久久午夜| 欧美少妇性生活视频| 久久久一二三| 亚州精品一二三区| 免费在线视频一区| 色www免费视频| 极品少妇一区二区| 波多野结衣在线免费观看| 免费久久99精品国产| 91小视频网站| 国产一区二区三区免费播放| 麻豆网站免费观看| 成人黄色国产精品网站大全在线免费观看 | 首页国产欧美久久| 最近中文字幕一区二区| 六月丁香综合在线视频| 三级黄色片免费看| av成人动漫在线观看| 免费黄色在线视频| 国产精品免费av| 青草影院在线观看| 午夜视频一区二区三区| 狠狠人妻久久久久久| 91成人在线免费观看| 亚洲一级av毛片| 日韩精品一区二| 午夜影院在线视频| 永久免费看mv网站入口亚洲| 中中文字幕av在线| 91精品国产网站| 99久久久国产精品免费调教网站| 成人羞羞国产免费| 欧美一级三级| 中文字幕日韩精品一区二区| 欧美日韩免费| 无码日韩人妻精品久久蜜桃| 国产乱码字幕精品高清av| 中文字幕 亚洲一区| 国产精品视频一二| 黄色一级免费视频| 欧美亚洲一区二区在线观看| 朝桐光av在线一区二区三区| 亚洲欧美国产va在线影院| 午夜激情在线观看| 78色国产精品| 婷婷激情成人| 久久青青草原| 欧美黄色一级视频| 能在线观看的av| 国产一区二区免费在线| 久久精品老司机| 亚洲男同性恋视频| 337p粉嫩色噜噜噜大肥臀| 日韩欧美一区二区久久婷婷| 可以在线观看的黄色| 久久99精品久久久久久琪琪| 最新日韩一区| 91精品国产一区二区三区动漫 | 亚洲一区二区三区精品在线观看| 欧美日韩岛国| 国产精品视频中文字幕| 2017欧美狠狠色| 免费麻豆国产一区二区三区四区| 在线观看不卡视频| 色欲av伊人久久大香线蕉影院| 日韩中文字幕在线视频播放| 成人福利av| 国产成人看片| 99久久亚洲精品蜜臀| 日本在线观看a| 成人网在线免费视频| 看黄色录像一级片| 日本高清无吗v一区| 天堂网www中文在线| 国模视频一区二区| 久久的色偷偷| 亚洲第一综合| 天堂资源在线中文精品| 免费成人深夜夜行p站| 亚洲尤物视频在线| 国产情侣激情自拍| 久久伊人精品一区二区三区| 另类一区二区三区| 日韩影院一区| 首页亚洲欧美制服丝腿| 国产麻豆天美果冻无码视频| 亚洲成av人片在www色猫咪| 亚洲第一视频在线播放| 欧美巨乳在线观看| 精品国产亚洲日本| 只有这里有精品| 韩国三级在线一区| 国产免费久久久久| 欧美日韩精品欧美日韩精品一综合 | 激情综合网最新| 91视频最新网址| 欧美精品v日韩精品v韩国精品v| aaa日本高清在线播放免费观看| 日韩免费观看av| 欧美一二区在线观看| 爱情岛论坛成人| 国产精品色一区二区三区| 嫩草影院一区二区三区| 影音先锋日韩有码| 欧美伊人亚洲伊人色综合动图| 午夜一区二区三区| 久久精品国产秦先生| 懂色av粉嫩av蜜臀av一区二区三区| 欧美人动与zoxxxx乱| 欧美极品视频| 操人视频欧美| 一本色道久久综合亚洲精品不| 国产夫妻性爱视频| 色嗨嗨av一区二区三区| 91在线导航| 91免费看片在线| 欧美性久久久| 国产熟妇搡bbbb搡bbbb| 欧美亚洲国产一区二区三区| 日本免费在线视频| 97超碰资源| 亚洲一区二区毛片| 欧美极品jizzhd欧美18| 777xxx欧美| 182在线播放| 欧美一区国产一区| 久草在线在线精品观看| 久草免费在线视频观看| 日韩成人免费视频| 久久福利在线| 男人添女荫道口女人有什么感觉| 91免费小视频| 国产精品一区二区人人爽| 欧美激情一区二区三级高清视频| 免费看久久久| 中文字幕22页| 亚洲在线视频免费观看| 国产对白叫床清晰在线播放| 18成人在线| 日日夜夜免费精品| 久久久久久免费观看| 亚洲丝袜在线视频| 香蕉成人app| 天天干在线影院| 亚洲一区二区在线视频| 超碰国产在线观看| 国产乱人伦精品一区二区| 日韩一区精品视频|