A. QT:怎麼編譯helloworld.cpp
你實際上已經編譯鏈接通過了,因為qttest.exe已經生成了,對,dll的那個錯誤就是加個環境變數,加好了理論上就應該可以運行了
mingw32-make就是你要用的make,也就是我們說的編譯器,mingw32-make的話就是mingw編譯器,如果你想用gcc或者vc的話就要用與之對應的編譯器,vc命令行的話應該是vc安裝目錄bin下的nmake
B. linux 下用arm體系QT編譯問題(目前我系統里有X86 和 arm體系(老師編好的)的QT各一個)
貌似是缺少系統庫,有些版本的linux編譯qt是會出現缺少系統庫而導致編譯不成功的問題,不是很推薦用最新的編譯器來編譯,其實2.4的內核和3.4.5的編譯器做qt就已經足夠了,你可以去查查看那些版本的linux下可以成功的編譯qt,安裝的時候盡可能把開發用的庫都選上,不然就只有自己再去打補丁,
僅作參考
C. qt編譯的時候make出錯
你的mingw版本沖突吧,-fno-keep-inline-dllexport需要g++ >=4.6。
開個cmd查一下你的 g++的版本吧。
D. qt在linux下怎麼編譯生成webengine模塊
[wanglj@localhost testQT]$ make
g++ -o testQT main.o -L/opt/Qt5.1.1/5.1.1/gcc_64/lib -lqt-mt -lXext -lX11 -lm
main.o: In function `main':
/home/wanglj/testQT/main.cpp:6: undefined reference to `QApplication::QApplication(int&, char**, int)'
main.o: In function `QString':
/usr/include/QtCore/qstring.h:413: undefined reference to `QString::fromAscii_helper(char const*, int)'
main.o: In function `main':
/home/wanglj/testQT/main.cpp:7: undefined reference to `QLabel::QLabel(QString const&, QWidget*, QFlags<Qt::WindowType>)'
main.o: In function `~QString':
/usr/include/QtCore/qstring.h:869: undefined reference to `QString::free(QString::Data*)'
/usr/include/QtCore/qstring.h:869: undefined reference to `QString::free(QString::Data*)'
collect2: ld 返回 1
make: *** [testQT] 錯誤 1
但若直接用 qtcreator 打開編譯,則無錯誤
並且find -name libqt-mt* 也找不到其他版本的該文件
用qtcreator編譯好的可執行文件,也找不到連接該lib文件
[wanglj@localhost build-testQT-桌面-Debug]$ ldd testQT
linux-vdso.so.1 => (0x00007fff4ddff000)
libQtGui.so.4 => /usr/lib64/libQtGui.so.4 (0x000000397f000000)
libQtCore.so.4 => /usr/lib64/libQtCore.so.4 (0x000000397ea00000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003978600000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007fda6a081000)
libm.so.6 => /lib64/libm.so.6 (0x0000003977a00000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003983a00000)
libc.so.6 => /lib64/libc.so.6 (0x0000003977e00000)
libgthread-2.0.so.0 => /lib64/libgthread-2.0.so.0 (0x000000397a600000)
librt.so.1 => /lib64/librt.so.1 (0x0000003978e00000)
libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x0000003979200000)
libpng12.so.0 => /usr/lib64/libpng12.so.0 (0x000000397be00000)
libz.so.1 => /lib64/libz.so.1 (0x0000003978a00000)
libfreetype.so.6 => /usr/lib64/libfreetype.so.6 (0x000000397ba00000)
libgobject-2.0.so.0 => /lib64/libgobject-2.0.so.0 (0x0000003979e00000)
libSM.so.6 => /usr/lib64/libSM.so.6 (0x0000003985a00000)
libICE.so.6 => /usr/lib64/libICE.so.6 (0x0000003984e00000)
libXi.so.6 => /usr/lib64/libXi.so.6 (0x000000397ce00000)
libXrender.so.1 => /usr/lib64/libXrender.so.1 (0x000000397d600000)
libXrandr.so.2 => /usr/lib64/libXrandr.so.2 (0x000000397de00000)
libXfixes.so.3 => /usr/lib64/libXfixes.so.3 (0x000000397da00000)
libXcursor.so.1 => /usr/lib64/libXcursor.so.1 (0x000000397e200000)
libXinerama.so.1 => /usr/lib64/libXinerama.so.1 (0x000000397e600000)
libfontconfig.so.1 => /usr/lib64/libfontconfig.so.1 (0x000000397d200000)
libXext.so.6 => /usr/lib64/libXext.so.6 (0x000000397c600000)
libX11.so.6 => /usr/lib64/libX11.so.6 (0x000000397b600000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000003978200000)
/lib64/ld-linux-x86-64.so.2 (0x0000003977600000)
libuuid.so.1 => /lib64/libuuid.so.1 (0x0000003983600000)
libexpat.so.1 => /lib64/libexpat.so.1 (0x000000397c200000)
libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x000000397ae00000)
libXau.so.6 => /usr/lib64/libXau.so.6 (0x000000397aa00000)
------解決方案--------------------
INCPATH = -I/usr/lib64/qt-3.3/mkspecs/default -I. -I. -I$(QTDIR)/include
這一行看上去你調用的qmake不是5.1.1的。試試指定完整路徑運行qmake
/opt/Qt5.1.1/5.1.1/gcc_64/bin/qmake testQT.pro
E. 為什麼 Qt Creator 的編譯如此之慢
取自知乎上的一篇文章
作者:姚冬
我是來反對樓上某些答案的。
我曾經用MFC寫了金山詞霸(大約20多萬行),又用Qt寫了YY語音(大約100多萬行),算是對兩種框架都比較有經驗。
糾正幾個錯誤的認識。
1. 「用Qt寫的程序編譯比MFC慢」的說法是錯誤的
絕對錯誤,單位代碼行數編譯Qt遠比MFC快得多,因為Qt庫的頭文件設計非常好,盡量都使用了前置聲明,避免了頭文件嵌套,幾乎所有類都使用了公有類和私有類的設計,把沒必要公開的聲明放到私有頭文件里,避免了編譯時引入過多代碼。而MFC沒有這樣的設計。
至於大家感覺MFC快主要原因是MFC工程默認打開了編譯預處理頭文件(PCH),但是這是VC編譯器的特性,所有C++程序都可以用,不是MFC特有,Qt也可以使用 PCH
方法很簡單,在你的 .pro 文件中加入一行
PRECOMPILED_HEADER = stable.h
指定 Stable.h這個頭文件作為編譯預處理文件,MFC里這個文件一般叫stdafx.h
然後在 stable.h里 包含你所用到的所有 Qt 頭文件,如果你用了很多qt的類可以直接包含所有
比如 :
#include <QtCore>
#include <QtGui>
這兩個文件里又包含了幾乎所有Qt常用類
不用擔心,即使包含了所有頭文件也沒關系,有了PCH再多頭文件也沒影響。
如果你還想編譯再快點,可以在 .pro里加入下面一行
QMAKE_CXXFLAGS += /MP
指定/mp編譯選項,編譯器將使用並行編譯,同時起多個編譯進程並行編譯不同的cpp
而且QT這種引入PCH的方法比MFC的好,由於MFC的PCH選項是每個工程逐個指定的,很容易被某些人搞壞,我曾經無數次修復PCH問題,但是Qt的選項是寫在.pro里的,寫一次就永遠不會錯。
MFC一旦弄壞了PCH,編譯也慢得令人發指。
給個參考時間吧,YY最新版本大約 100多萬行C++代碼,rebuild debug和releae總共需要20多分鍾,機器是i5 四核SSD硬碟。其實對於大項目硬碟才是瓶頸,如果換機械硬碟要慢差不多70%,有個同事用10G內存做了個內存檔編譯,還能快30%。
如果你比這個慢,請檢查自己的代碼問題。
2. 「QT本身編譯慢」的說法是錯的
Qt本身其實編譯並不慢,慢的是webkit庫和例子程序,你如果不改任何選項默認是會編譯所有的,webkit本身就是個恐龍級項目,用了太多泛型技術,編譯非常慢。另外Qt里附帶了數百個例子工程,都編譯一邊也很慢。如果僅編譯QT核心庫是很快的,比如QtCore只需要1分鍾,QtGui大約5分鍾。
送個福利(僅限windows vc++ 2008):
configure.exe -qt-libjpeg -qt-zlib -qt-libpng -qt-libjpeg -qt-gif -no-libtiff -no-libmng -nomake examples -nomake demos -no-webkit -nomake doc -no-plugin-manifests -no-exceptions -no-rtti -no-qt3support -no-openssl -no-opengl -no-multimedia -no-3dnow -no-native-gestures -no-style-motif -no-style-cde -no-style-cleanlooks -no-style-plastique -no-sql-sqlite -no-dbus -platform win32-msvc2008
這是我自己用的Qt編譯前的配置命令行,把我自己用不到的都去掉了,這樣配置編譯就快很多了。
我把 webkit examples demos 等大傢伙都去掉了。如果你真的需要這些,可以安裝Qt sdk裡面有編譯好的版本。
補充:Qt creator只是IDE,不是編譯器,編譯慢真的不關他的事,要看你具體用的編譯器是什麼。一般來說在Windows下就是minGW,也就是一個移植版本的GCC,的確是不如VC++里的CL快的。
如果是其它平台,那麼編譯器可以換成LLVM的clang,那就快很多了。
在Windows下來是用VC++吧,推薦VC2008,Qt和VC的IDE結合非常好,我現在的項目都是用VC2008+QT的,開發效率很高,記得裝Visual Assist哦。
qmake -tp vc
可以用 .pro生產 .vcproj的VC工程文件,可以用VC++打開編譯。
F. QT5.5 for vs2010,包含5.5的庫目錄QTWidgets、QTCORE、QTGUI。為什麼編譯會出現qt庫錯誤求解決方案
qt5.0.2forwindows32bit(mingw4.7)是使用mingw32環境+gcc4.7編譯而成的二進制動態鏈接庫版本。qt5.0.2forwindows32bit(vs2010)是使用VS2010的配置和windowssdk7.0所提供的編譯工具生成的用於VS2010的版本。其中mingw4.7版本自帶了編譯器。而vs2010版本必須要安裝VS2010才能使用。其實沒有vs只安裝windowssdk也可以,不過需要一個代替vs2010的配置工具集。你C++什麼水平啊?如果不是新手的話我建議你去檢查一下配置項,就是qtcreator的編譯環境配置是否把qt路徑配置進去了。如果你是新手,我暫時勸你放棄qt,沒有足夠的C++功底,想用Qt很困難的。
G. qt 只能寫c++程序嗎,不能寫c語言的程序嗎,要寫c只能用 gtk嗎
1、是可以的吧。c的文件,照樣編譯通過,使用正常參見網上:於是,為了達到最好的開發效果,開始想辦法用QtCreator來寫C/C++程序,他不僅有完善的IDE,方便的智能完成,還內嵌了gdb,調試起來很方便,感覺就和VS2005無異,更方便的是還集成了Git等版本控制插件,可以說是相當完美了。
2、其實,QtCreator是本來就是可以寫C/C++程序的,唯一的缺陷就是,它會把兩個庫鏈接進去QtCore和QtGui。這兩個是默認庫,但 是一般我們的標准C/C++程序是不用這兩個庫的。去掉也很簡單,直接用-=就可一了,用gedit或者vi建立一個空文檔,把以下內容加進去,一個標准 的Qt空C/C++項目模板就完成了,把對應位置填上項目名和文件名保存為一個.pro文件再用QtCreator打開就可以了
H. QT在編譯的時候找不到頭文件
首先
qmake -project
然後打開生成的hello.pro文件,加上兩行
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
把這兩行放前面
大體如下:
######################################################################
# Automatically generated by qmake (3.0) ?? ??? 26 08:54:10 2014
######################################################################
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TEMPLATE = app
TARGET = hello
# Input
SOURCES += main.cpp
然後
qmake hello.pro
再
mingw32-make
I. QT5執行編譯後的exe 提示qt5cored.dll丟失Release都試過
這個問題一般是你的電腦中有幾個Qt的版本,導致編譯的時候調用的Qt版本與運行時調用的Qt版本不同。