① 求教大神 qt5編譯mysql驅動問題
注意編譯器一定要和MYSQL的平台版本一致,32位的用32位的編譯器編譯,64位的用64位的編譯器編譯。
准備工作:MYSQL的目錄:D:\SQL_Server\mariadb
Qt5.1.1的目錄:C:\Qt
1. 先將D:\SQL_Server\mariadb中的include\和lib\文件夾復制到根目錄(C:),因為後面make時路徑不能有空格。
2. 打仿局開QT5.1.1 for Desktop(MinGW 4.8)
cd C:\Qt\Qt5.1.1\5.1.1\Src\qtbase\src\plugins\sqldrivers\mysql
qmake "INCLUDEPATH+=D:\SQL_Server\mariadb\include" "LIBS+=D:\SQL_Server\mariadb\lib\libmysql.lib" mysql.pro
mingw32-make
如果出現找不到mysql.h文件就用qtcreator打開mysql.pro文件,配置項目,然後編譯,就會出現錯誤提老大纖示,把#include <mysql.h>改成#include <mysql/mysql.h>,編譯就行了,或回到命令行再次執行mingw32-make即可.
3. 編侍仿譯成功後。
進入到C:\Qt\Qt5.1.1\5.1.1\Src\qtbase\plugins\sqldrivers目錄下,選中qsqlmysql.dll和 qsqlmysqld.dll兩個文件,
復制到C:\Qt\Qt5.1.1\5.1.1\mingw48_32\plugins\sqldrivers目錄下。
② 編譯qt5怎麼配置opengl
下載opengl源碼。交叉編譯opengl。然後把opengl的頭文件,庫文件包含到Qt配置的路徑里,再交叉編譯Qt
③ Qt5.12.5 靜態編譯以及裁剪大小對比
最近在研究用靜態編譯的 Qt 做個 Qt 的安裝包程序,因為 nsis 在界面自定義還有多語言適配等問題上不太理想。做安裝包程序基本上只需要有最基礎的 Qt 界面模塊即可,不過把除了 UI 的模塊全部去掉又比較難用...這里記錄下兩種極端編譯配置下生成的程序大小作為參考。
編譯需要的環境可以看官方文檔, windows-requirements 中的 Building from Source 有說明需要安裝的工具,所有工具都記得要添加到環境變數。
最後的-mp 是多核編譯的參數,多核編譯用 jom 快得一匹,全模塊也只要 20 分鍾編譯完成。
這個配置把能刪的模塊都刪了,編譯出來後基本也就基礎UI相關類能用...所以編譯起來超快的。
比全模塊配置生成的exe減少了 30%的大小,不過 30%也就 3M,在 windows 平台的話倒是沒必要追求這種極致了=-=
此時如果是移動了編譯後的路徑,可能報錯 Qt version is not properly installed,please run make install 。在 qmake.exe 所在目錄新建一個 qt.conf 文件,並添加下面的內容即可:
④ 討論上Windows平台怎麼編譯Qt5
Qt5的編譯官方有一篇wiki:http://developer.qt.nokia.com/wiki/Building_Qt_5_from_Git
簡要的總結下我的體會,歡迎補充完善、批評指正。
1.First clone the top-level qt5 git repository:
git clone git://gitorious.org/qt/qt5.git qt5
這一行不用說了,自然是將Qt5的代碼克隆。不過,如果你只是初次克隆Qt5的代碼,會很驚訝:為何克隆後的代碼只有十幾MB?
原來,Qt5已經實現了Qt的模塊化,詳見:http://labs.qt.nokia.com/2011/05/12/qt-moles-maturity-level-the-list/
所以可以在克隆得到的Qt5源碼根目錄下看到:.gitmoles 文件,其內容部分摘錄如下:
[submole "qtbase"]
path = qtbase
url = git://gitorious.org/qt/qtbase.git
[submole "qtsvg"]
path = qtsvg
url = git://gitorious.org/qt/qtsvg.git
[submole "qtdeclarative"]
path = qtdeclarative
url = git://gitorious.org/qt/qtdeclarative.git
...
這時,有Git基礎的朋友一定會想到:
git submole init
git submole update
不過,請不要這樣做!
2. Following the README file we initialize the repository. This clones the various sub-moles of Qt5:
./init-repository
這是一個perl腳本。如果是在msys-git下,會發現Perl的版本不夠。
我們需要安裝一個Windows版本的Perl:http://www.activestate.com/activeperl/downloads
安裝好以後,Perl就添加到PATH環境變數中去了。
在MSVC的控制台下執行:
perl init-repository --help
注意,不是直接執行init-repository,要用perl來執行它。看看幫助:大致了解下有哪些功能。
3. 注意它的三個小提示:
Hint1: If you』re going to contribute to Qt 5, you』ll need to pass the —codereview-username <Jira/Gerrit username> option to set up a 「gerrit」 remote for all the sub-moles.
Hint2: If you』re having problems downloading the webkit repository (which is quite big), you can pass —no-webkit.
Hint3: If you』re behind a firewall, pass —http
4. 我的方法:
perl init-repository -f --codereview-username loaden
這樣就可以實現子模塊的批處理了。特別要注意的是:在處理這些子模塊時,其實是git clone了這些子模塊,以致於他們可以獨立使用。在qt5\qtbase目錄下可以找到.git目錄。
這與git submole update的結果是不一樣的!!
同時我使用了codereview的用戶名,是為了可以創建一個名為gerrit的遠程倉庫,可以將貢獻的代碼推送進去,類似:
git push gerrit HEAD:refs/for/master
5. 源碼下載是非常慢的,因為QtWebkit達到了1.7GB。源碼下載完成後,進入Qt5源碼目錄,配置環境變數:
set PATH=%CD%\qtbase\bin;%PATH%
之後echo看一下結果是否正確:
echo %PATH%
6. 建議直接在Qt5的源碼目錄下執行配置!
configure -confirm-license -opensource -release -shared -platform win32-msvc2010 -fast -no-stl -no-qt3support -nomake examples -nomake demos -nomake tests
7. 編譯全部模塊,直接執行nmake就可以了。如果只編譯一個模塊,可以這樣:
nmake mole-qtbase
雙擊打開Qt5目錄下的Makefile文件,可以看到有這些模塊:
SUBTARGETS = \
mole-qtbase \
mole-qtsvg \
mole-qtphonon \
mole-qtxmlpatterns \
mole-qtdeclarative \
mole-qttools \
mole-qttranslations \
mole-qtdoc \
mole-qlalr \
mole-qtqa \
mole-qtlocation \
mole-qtactiveqt \
mole-qtsensors \
mole-qtsystems \
mole-qtmultimedia \
mole-qtfeedback \
mole-qtquick3d \
mole-qtdocgallery \
mole-qtpim \
mole-qtconnectivity \
mole-qtwayland \
mole-qtjsondb \
sub-qtwebkit-pri \
mole-qtwebkit-examples-and-demos
⑤ QtCreator配置交叉編譯工具鏈
環境:ubuntu16.04桌面環境。
說明:使用ubuntu16.04桌面環境,安裝QtCreator之後,再利用QtCreator開發QT5 GUI程序,如果編譯的程序要運行在arm linux嵌入式系統中,則必須配置交叉編譯工具鏈。
主要配置內容:調試器、編譯器、QT版本。
1、打開工具,點擊選項。
2、選擇選項中的構建與運行,概要界面。
3、構建套件(kit)界面。
4、Qt Versions界面。
5、編譯器界面。
6、Debuggers界面。
7、Qbs界面。
8、交叉編譯例子:
⑥ Qt5 在Linux 下的編譯,該怎麼處理
[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
⑦ qt5安卓配置支持安卓
一、首先下載以下安裝包,如果提供的鏈接失效請自行下載:
(1)
Android SDK (Windows 32-bit ADT版):
【直接下載】s-x86-20131030.zip
(2)
Android NDK(Windows 32-bit):
Java JDK(Windows 32-bit):
(4)
Apache-Ant:
QT 5.1.1 for Android (Windows 32-bit 離線版):
二、接下來解壓、安裝下載好的各安裝包:
(1)Android SDK:
【解壓】解壓到 D:ADT 目錄下
(2)Android NDK:
【解壓】解壓到 D:NDK 目錄下
(3)Java JDK(Windows 35-bit):
【安裝】安裝過程中有兩次要選擇安裝路徑 【注意請根據自己安裝的版本自行修改,後面設置環境變數需要用到】
第一次填寫 D:Javajdk1.7.0_45
第二次填寫 D:Javajre7
(4)Apache-Ant:
【解壓】解壓到D:ANT目錄下
(5)QT 5.1.1 for Android (Windows 35-bit 離線版):
【安裝】安裝到D:QT目錄下
三、根據第二步中的相關路徑,設置系統環境變數:
(一) 右鍵單擊我的電腦->屬性->高級系統設置->環境變數,在系統變數中新建以下變數:
(1)變數名:JAVA_HOME
變數值:D:Javajdk1.7.0_45
(2)變數名:CLASSPATH
變數值:.;%JAVA_HOME%lib;%JAVA_HOME%lib ools.jar; 【注意最前面的點號 . 和最後面的分號 ; 不能漏掉】
(3)變數名:ANDROID_SDK_HOME
變數值:D:ADTsdk
(4)變數名:ANT_HOME
變數值:D:ANT
(二)在系統變數里找到變數 Path ,選擇」編輯「,在最後面添加:
%JAVA_HOME%in;%JAVA_HOME%jrein;%ANDROID_SDK_HOME%;
【注意最後面的分號 ; 不能漏掉】
(6)項目構建成功後,右鍵 項目,選擇 運行,Android虛擬設備將會自動打開,啟動過程過程較慢,耐心等候。
(7)若無意外,將會成功運行該空項目生成的apk,因為這里是個空的項目,什麼也沒寫,所以當然什麼也沒有,效果如圖,表明環境配置成功。
(8)接下來,動手開始 QT for Android 開發吧。
PS:轉載請註明出處,謝謝合作。
⑧ 「干貨」python-qt5在centos7下編譯方法
本指南提供了在CentOS 7 for Python 2.7上編譯PyQt5的基本說明
1、安裝Qt
2、安裝依賴項
3、編譯SIP
4、編譯PyQt
現在可以從首次運行的Python版本哪做訪問PyQt configure.py。
如果這樣會產生一個帶有單個按鈕老蘆的新窗李含衡口,那麼恭喜成功了!
⑨ vs不能編譯qt
1. 建立環境變數
QMAKESPEC win32-msvc2011 // 注意
QTDIR S:\QT\4.8.4 // Qt的安裝目錄
Path S:\QT\4.8.4\bin;
注意: QMAKESPEC 還是 win32-msvc2011 因為如果要改成win32-msvc2012,需要改很多相關的配置。又麻煩又不安全。而且使用win32-msvc2011並不影響我們的結果。
2. 修改 mkspecs\win32-msvc2011\qmake.conf
將 QMAKE_COMPILER_DEFINES += _MSC_VER=1600 WIN32 當中的1600改成1700
QMAKE_CFLAGS = -nologo -Zm200 -Zc:wchar_t-
改為
QMAKE_CFLAGS = -nologo -Zm200 -Zc:wchar_t
3. 在開始菜單中找到 VS2012 x86 Native Tools Command Prompt 並運行
這一步非常簡單但很重要,一定要選擇VS2012目錄下的bat文件
4. 在控制台中,切換到Qt的安裝目錄下。使用如下參數進行配置
configure.exe -platform win32-msvc2011 -opensource -debug-and-release -shared -qt-sql-sqlite -plugin-sql-sqlite -qt-zlib -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -qmake -process -rtti -dbus -webkit -script -scripttools -no-dbus
5. nmake 開始編譯。 不過在編譯過程中會遇到幾個錯需要手動修改一下代碼。
6. 第一個錯誤如下:
.\wtf/HashSet.h(180) : error C2664: 'std::pair::pair(const std::pair &)' : cannot convert parameter 1 from 'std::pair' to 'const std::pair &'
在Qt的Src目錄搜索這個HashSet.h
將180行所在的函數以及它下面的函數用下面的代碼替換:
template
inline pair<typename HashSet::const_iterator, bool> HashSet::add(const ValueType &value)
{
auto p= m_impl.add(value);
return make_pair(typename HashSet::const_iterator(p.first), p.second);
}
template
template
inline pair<typename HashSet::iterator, bool>
HashSet::add(const T& value)
{
typedef HashSetTranslatorAdapter Adapter;
typedef typename HashSet::iterator iter_type;
auto& temp = m_impl.template addPassingHashCode(value, value);
return make_pair((iter_type)temp.first, temp.second);
}
7. 繼續 nmake遇到第二個錯誤
platform\DefaultLocalizationStrategy.cpp(327) : error C2001: newline in constant
platform\DefaultLocalizationStrategy.cpp(327) : fatal error C1057: unexpected end of file in macro expansion
這個錯誤的原因是因為代碼裡面的非英文的引號造成的。
原始的錯誤代碼如下:
return WEB_UI_STRING("Look Up 「」", "Look Up context menu item with selected word").replace("", (selectedString));
大家注意 單詞前後的引號。就是它造成編譯報錯。修改成下面的代碼
return WEB_UI_STRING("Look Up \"\"", "Look Up context menu item with selected word").replace("", (selectedString));
8. 再次nmake,好了到這里為止,就剩下漫長的等待了。我一般是睡覺之前編譯,一晚上的時間足夠了。
9. 補充,有個開源工具叫jom,也是qt官方的,它支持多核編譯,可以大大加快編譯速度。
使用的方法也很簡單jom –j 8 你有幾個核就寫幾。我是8個核
注意最後兩個DLL是VS2012的運行時庫,說明我們已經編譯成功了!
⑩ QT5靜態編譯無法載入資料庫插件
今天終於自己靜態編譯過了QT5.3.1, 成功用在項目上了, 記錄下configure指令.
configure -confirm-license -opensource -platform win32-msvc2013 -mp -debug-and-release -static -prefix "E:\Qt\5.3.1-static-vs2013" -qt-sql-sqlite -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -qt-freetype -no-qml-debug -no-angle -nomake tests -nomake examples -skip qtwebkit
其中 -mp 是啟用多核編譯的開關