導航:首頁 > 源碼編譯 > qt版本不對導致不能編譯

qt版本不對導致不能編譯

發布時間:2022-09-09 20:59:39

A. vs不能編譯qt

1. 下載qt的安裝包和vs2011的qt插件,大家可以到下面的地址進行下載
BBS:
官網:

本人是在BBS上找到的,官網上沒仔細去找了(英文太多)。
2. 安裝qt sdk
安裝其實很簡單了,基本上一路回車即可,主要是要注意下qt的安裝路徑最好安裝在全英文路徑而且中間沒有空格, 安裝好後,可以運行開始菜單裡面的qt demo,直觀感受下qt的強大功能!

界面非常炫酷

4. 編譯qt
qt默認使用mingw進行編譯,如果要使用vs2011開發,需要將qt重新編譯。

入開始菜單microsoft visual studio 2011,visual studio tools,visual studio
command prompt (2011),需要注意的是,這裡面必須是使用visual studio command prompt
(2011),不能使用cmd的dos窗口

進入qt的安裝目錄後,執行cd qt,進入qt的根目錄

運行命令 configure -platform win32-msvc2011,o(選擇opensource模式)回車,y(同意license)回車
k1988插入:
在編譯過程中,為了加快速度,可以對configure適當的加些參數,比如-fast,-no-webkit(這個貌似挺耗時的)

選擇的命令行:configure -platform win32-msvc2011 -fast -debug-and-release
-no-webkit -no-script -no-qt3support -nomake demos -nomake examples
-nomake tools -mp
其中:mp是多線程編譯選項。
接著就會自動配置qt的編譯環境,等配置結束後,運行nmake,回車,qt就會開始漫長的編譯過程,這段時間非常長,需要4個小時以上。
liuyu遇到的問題:(自己遇到過,當時沒記錄下來,但是記得編譯過程中遇到這些問題)
1.DefaultLocalizationStrategy.cpp
C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/INCLUDE/yvals.h(21) : war
ning C4005: 『_HAS_TR1』 : macro redefinition
command-line arguments : see previous definition of 『_HAS_TR1』
platform/DefaultLocalizationStrategy.cpp(327) : error C2001: newline in constant
platform/DefaultLocalizationStrategy.cpp(327) : fatal error C1057: unexpected en
d of file in macro expansion
NMAKE : fatal error U1077: 『「C:/Program Files (x86)/Microsoft Visual Studio 10.0
/VC/BIN/cl.EXE」』 : return code 『0x2』
Stop.
NMAKE : fatal error U1077: 『「C:/Program Files (x86)/Microsoft Visual Studio 10.0
/VC/BIN/nmake.exe」』 : return code 『0x2』
Stop.
NMAKE : fatal error U1077: 『cd』 : return code 『0x2』
Stop.
NMAKE : fatal error U1077: 『cd』 : return code 『0x2』
Stop.
解決辦法:
打開文件…/Qt4.8.5/src/3rdparty/webkit/Source/WebCore
/platform/DefaultLocalizationStrategy.cpp
找到327行刪除的引號「」

2.NMAKE:fatal error U1077. return code 0x2
產生原因:找不到代碼文件中包含的頭文件
解決辦法:cmd下進入到vs安裝路徑/VC/Bin下,執行vcvars32,此時會執行vcvas32.bat自動為vs設置環境變數 (這個也試過好幾回,沒效果,依然出現上面錯誤)試試下面的就解決了:

經分析,是環境變數設置的CURR_DIR和TARGETDIR值中含有空格導致了此問題。
通過下面的命令刪除環境變數即可。
在d:/Qt/4.8.6目錄下鍵入下面的命令即可(不是很明白)

接著繼續nmake命令 回車換行
k1988插入:(本人未找到以下文件)
請先刪除
src/3rdparty/webkit/webcore/tmp/moc/debug_shared/mocinclude.tmp
src/3rdparty/webkit/webcore/tmp/moc/release_shared/mocinclude.tmp
/src/script/tmp/moc/debug_shared/mocinclude.tmp
/src/script/tmp/moc/release_shared/mocinclude.tmp
等文件,否則編譯有可能失敗。
k1988插入:
這一步很重要,關繫到是否能用qt-vs-addin。
把d:/qt/bin下的.qmake.cache和configure.cache這兩個文件手動備份到另一個地方。
(本人未嘗試過)然後使用nmake clean進行清理掉那些中間文件(pdb,obj等文件),清理出4個g左右的空間。
nmake confclean是清理配製文件,占的空間不大,可以不執行了。這個時候再把剛備份的.qmake.cache和configure.cache拷回原處。
5.配置vs2011的qt開發環境(vs2011最好是英文版本,qt對vs2011中文版本可能支持的不好)
等qt編譯好後就可以配置vs2011的開發環境了,進入vs2011,選擇qt菜單,qt option,進入下圖界面
k1988插入:

步驟編譯好了,用qt助手paths加進去,不知為何ok鍵不亮, 紅字提示:qt in the given path built using
mingw 這個是qt插件的bug,得手工改注冊表 hkey_current_user/software/trolltech/versions/
下增加一個子項 qt486(需要的名稱) 子項下面增加一個數值 installdir,值就是你要配置的qt路徑
ps:如果沒有versions這個文件夾就新建一個吧!
(這里確實是個坑,僅僅修改注冊表居然沒有用,還要去qt的lib文件夾下刪掉兩個文件 –>>刪除qt的lib目錄下(我的路徑是D:/Qt/4.8.6/lib)的libqtmain.a and libqtmaind.a 兩個文件。)

點擊add,添加qt的安裝目錄,並取名字,我這里使用qt的4.8.6版本為名稱,選擇ok後即可。
6.新建或者導入qt項目
可以通過在vs2011新建一個qt項目

B. 求助QT5.4 安裝在win8.1後無法編譯

關於QT安裝時出現錯誤請參照我的上一篇文章http://hi..com/whyme%CE%DE%CF%DE/blog/item/91103d1a71f4aed5e2fe0b65.html
現在說一下編譯運行出錯的解決辦法:
說明:redhat紅帽5.4有點太老了,所以運行最新的QT時,出現了各種問題,最主要的就是各種庫的問題:
(1)undefined reference to `FcFreeTypeQueryFace'的問題
需要更新fontconfig,我用的是fontconfig-2.6.0.tar.gz,2.5.0我試了,出現了很多錯誤,不知道為什麼2.6.0可以,
附下載地址http://115.com/file/be9m2r
解壓到/usr/src 進入後 ./autogen.sh 然後終端中提示make,你就make,最後make install。完成。./autogen.sh也可以輸入./configure --sysconfdir=/etc --prefix=/usr --mandir=/usr/share/man 具體可能是./configure後指明了安在你想要安得地方吧(我用的是./autogen.sh)
如果期間遇到錯誤不要不耐煩,按照提示網路一下會有解決的辦法的。
(2)undefined reference to 'FT_Library_SetLcdFilter'
這是由於freetype太舊的原因,也是一樣,需要更新:
附下載地址:http://115.com/file/anwcxdfk
安裝方法與(1)一樣。也有安裝(1)時可能有問題要先安裝(2) 這個自己嘗試吧,我是先(1)後(2)的。
還有就是我的系統是紅帽企業版5.4,不是的或者版本不一樣的,我不知道我的方法有沒有效果。
(3)接下來應該有的常式就可以編譯運行了,但是還有不能運行的,那是因為你的glibc太舊了,這個是c動態庫。必須注意的是,幾乎所有的應用程序都依賴於glibc的動態庫,重新編譯安裝glibc必須非常謹慎,一旦出錯可能導致系統無法繼續使用。所以強烈建議閱讀源碼目錄下的INSTALL。
附下載地址:http://115.com/file/e749sc6n
第一步是配置glibc,出於安全的考慮,glibc不允許在源碼目錄樹下編譯,必須新建一個目錄,然後在新建目錄下運行configure,我就在/usr/src下建了一個glibc文件夾mkdir glibc。然後在新建目錄里運行解壓縮文件中的config,在運行這個之前,先在終端運行需要加上優化開關export CFLAGS="-g -O2 -march=i686" ,然後運行../glibc/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin 這樣就不是默認安裝的路徑了安裝在/usr下,這會將glibc安裝為linux系統的標准庫。
執行make -j 。glibc的編譯相當耗時,可以給make加上-j選項並行編譯glibc。make -j
然後make install。
make時可能會有錯誤我就遇到了以下錯誤,我是這么解決的:
1、在編譯glibc的過程中可能出現錯誤:「../sysdeps/i386/fpu/s_frexp.S:66: Error: invalid identifier for ".ifdef"」,解決方法是:
1)、在glibc源碼目錄下找到文件:nptl/sysdeps/pthread/pt-initfini.c,找到第46行附近:asm ("\n#include "defs.h"");在其後添加代碼:
asm ("\n#if defined __i686 && defined __ASSEMBLER__");
asm ("\n#undef __i686");
asm ("\n#define __i686 __i686");
asm ("\n#endif");
2)、在glibc源碼目錄下找到文件:sysdeps/unix/sysv/linux/i386/sysdep.h,找到第30行附近:#include <tls.h>,在其後添加代碼:
#if defined __i686 && defined __ASSEMBLER__
#undef __i686
#define __i686 __i686
#endif
重新make
2、在編譯glibc的過程中可能出現錯誤:「./sysdeps/i386/i686/multiarch/strcmp.S:78: Error: Error: unrecognized symbol type "gnu_indirect_function"unrecognized symbol type "gnu_indirect_function"」,原因是沒有安裝新版的binutils,如果依照前面的步驟安裝了binutils-2.21應該不會出現該錯誤。(注第2個錯誤我沒遇到)
註:還有一個地方不知道是哪一步遇到錯誤了需要安裝libxml我在紅帽的系統鏡像中的server中找到了三個相關文件libxml2*.rpm安裝即可!!!!!!
至此,重啟reboot,打開QT運行常式,可能還有問題,我的就是還是有問題,解決辦法如下:
把QT的安裝目錄和QT中的bin都添加為環境變數,在/etc/profile下,具體怎麼填您應該知道吧,這里不提了。source /etc/profile一下
然後再點擊QT的左邊欄的項目在構建和運行的選項中,您可能哪裡沒有選擇,一定要讓你的項目有效和目錄正確,QT的版本正確!!!QT的gcc編譯目錄正確,gcc一般用的是QT文件中自帶的!!如果還不行,那就在你的在項目目錄項運行make clean!!如果還不對!!!vi Makefile 可能是這里有問題,如果不會改,就乾脆刪了rm Makefiel。然後再在QT中運行一下。

C. Qt5.3不能編譯,急求!!!!!

病毒趕快治療。

D. Qt更換版本後的編譯問題

在設置里重新指定 debuger 路徑

E. 新人求助 Qt無法編譯運行

Could not find qmake configuration directory 從這個錯誤上看,是qt.conf配置文件受到破壞。 有兩種可能性: 1、病毒惡意破壞qt.conf文件 2、自然界不可抗因素破壞(比如電腦遭雷擊導致硬碟中的部分文件丟失)

F. 用qt低版本編程,後來安裝QT 高版本就不能編譯運行了嗎

不會的.qt向後兼容做的很不錯.

G. 我的qt是 4.6.3編譯qt 4.6.2的項目,提示版本不對。qt 4.6.3 如何兼容qt4.6.2請教高人。

一般不要用bin or exe的安裝,那個都不好。使用qt最好是下載純粹的src自己build一個最好。

H. 為什麼用QT PC版可以編譯成功,並可以一運行成功,但是用qt 4.7.0編譯環境無法編譯成功顯示錯誤!謝謝!

你究竟怎麼編譯,目標環境是什麼?
arm可不是PC機上運行的,估計是集成開發環境有特別的設置,你再仔細看看吧。
如果你確實是希望在arm上面運行你最好找移植好的例子,和標準的略有不同,主要是編譯器不一樣。
如果你打算在PC上運行。那麼你的版本不對。重新下載

閱讀全文

與qt版本不對導致不能編譯相關的資料

熱點內容
卡爾曼濾波演算法書籍 瀏覽:766
安卓手機怎麼用愛思助手傳文件進蘋果手機上 瀏覽:841
安卓怎麼下載60秒生存 瀏覽:800
外向式文件夾 瀏覽:233
dospdf 瀏覽:428
怎麼修改騰訊雲伺服器ip 瀏覽:385
pdftoeps 瀏覽:490
為什麼鴻蒙那麼像安卓 瀏覽:733
安卓手機怎麼拍自媒體視頻 瀏覽:183
單片機各個中斷的初始化 瀏覽:721
python怎麼集合元素 瀏覽:478
python逐條解讀 瀏覽:830
基於單片機的濕度控制 瀏覽:496
ios如何使用安卓的帳號 瀏覽:880
程序員公園采訪 瀏覽:809
程序員實戰教程要多長時間 瀏覽:972
企業數據加密技巧 瀏覽:132
租雲伺服器開發 瀏覽:811
程序員告白媽媽不同意 瀏覽:333
攻城掠地怎麼查看伺服器 瀏覽:600