• 30708阅读
  • 58回复

[共享]Qt5.1.0 MinGW480 release静态版编译结果及过程分享 [复制链接]

上一主题 下一主题
离线realfan
 

只看楼主 倒序阅读 楼主  发表于: 2013-07-05
— 本帖被 XChinux 执行加亮操作(2013-07-12) —
原帖见日志:http://www.qtcn.org/bbs/apps.php?q=diary&a=detail&did=1448


      这是我编译好的静态release版,有需要的可以直接取用,7z压缩包,文件大小90M左右
http://pan.baidu.com/share/link?shareid=3402474525&uk=673227135


包含odbc,sqlite,没有webkit
(注:如果不是解压到c:\Qt\目录下,需要修改在qmake.exe同一文件夹下的qt.conf文件
内容为
[paths]
Prefix = C:/Qt/5.1.0-rel-static(路径根据实际情况设)
注意,编码一定要ANSI格式,不能用UTF-8。路径分隔符用"/"或"\\")


如果要自己编译,可以参考下面的过程及需要的文件
一、文件准备
下面用到的文件,可以自行到相应官网下载。我在网盘上也共享了:
①    qt-windows-opensource-5.1.0-mingw48_opengl-x86-offline.exe
http://pan.baidu.com/share/link?shareid=3489622492&uk=673227135

http://download.qt-project.org/official_releases/qt/5.1/5.1.0/qt-windows-opensource-5.1.0-mingw48_opengl-x86-offline.exe
对于这里编译来讲,只是用里面的mingw。从搭建开发环境的角度,也需要装一个。
②  qt-everywhere-opensource-src-5.1.0.zip
http://pan.baidu.com/share/link?shareid=3526029235&uk=673227135

http://download.qt-project.org/official_releases/qt/5.1/5.1.0/single/qt-everywhere-opensource-src-5.1.0.zip
③    Python3.3.2
http://pan.baidu.com/share/link?shareid=3536585963&uk=673227135
如果不编译qtwebkit,就不用安装ActivePerl了。

二、安装
①    安装qt-windows-opensource-5.1.0-mingw48_opengl-x86-offline.exe,我是安装在C:\QT\Qt5.1.0
②    将qt-everywhere-opensource-src-5.1.0.zip解压到C:\QT\
③    安装Python3.3.2     C:\Python33


三、编译准备
编辑C:\QT\qt-everywhere-opensource-src-5.1.0\qtbase\mkspecs\win32-g++\qmake.conf
找到QMAKE_LFLAGS和QMAKE_LFLAGS_DLL,后面赋值为-static
QMAKE_LFLAGS        = -static
QMAKE_LFLAGS_DLL        = -static
保存,退出


(如果不做这个修改,生成的执行文件要依赖libgcc_s_dw2-1.dll,libstdc++-6.dll,libwinpthread-1.dll)


四、开始编译
开始==》程序==》Qt5.1.0==》5.1.0==》MinGW 4.8(32-bit)==》Qt 5.1.0 for Desktop (MinGW 4.8 32 bit)
进入命令窗口,输入命令


① cd C:\QT\qt-everywhere-opensource-src-5.1.0
② set path= C:\Python33;%path%
③ 配置


configure -confirm-license -opensource -platform win32-g++ -release -static -ltcg -prefix "C:\QT\5.1.0-rel-static" -qt-sql-sqlite -qt-sql-odbc -plugin-sql-sqlite -plugin-sql-odbc -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -qt-freetype -no-qml-debug -no-c++11 -no-angle -nomake docs -nomake tests -nomake examples -nomake demos -skip qtwebkit


④ 没出什么错误的话,mingw32-make


⑤  mingw32-make install


好了,大功告成了。在QtCreator中,加一个Qt Version,指定到 C:\QT\5.1.0-rel-static\bin\qmake.exe,就可以用了。
这样,如果用动态的,就用qt-windows-opensource-5.1.0-mingw48_opengl-x86-offline安装的,用静态的,就用自己编译的。








离线skykingf

只看该作者 1楼 发表于: 2013-07-05
楼主再写个vs2012的静态编译过程吧
离线qingxp9
只看该作者 2楼 发表于: 2013-07-05
问下 creator 如何指定使用自动检测外(也就是你编译好的qmake)呢
离线realfan

只看该作者 3楼 发表于: 2013-07-05
回 2楼(qingxp9) 的帖子
QT Creator, 菜单Tools==》Option==》Build&Run==》
Qt Versions选项卡:
点击<<Add>>按钮,选择
C:\Qt\5.1.0-rel-static\bin\qmake.exe                (具体路径根据你的目录情况)  
version name: Qt5.1.0(rel_static)   (这个name是随便取的)
点击<<Apply>>

Kits选项卡:
点击<<Add>>按钮,
name: qt5.1.0rel_static                            
Device type: Desktop
Compiler: MinGW32                            
Debugger: Auto-detect
Qt version:  Qt5.1.0(rel_static)
离线彩阳

只看该作者 4楼 发表于: 2013-07-06
icu这一块真的很难编译,总是出现语法错误,提示找不到的标识符。realfan如何解决的呢?
上海Qt开发联盟,热忱地欢迎你的加入!
离线realfan

只看该作者 5楼 发表于: 2013-07-06
回 1楼(skykingf) 的帖子
目前没有环境
离线qingxp9
只看该作者 6楼 发表于: 2013-07-06
回 3楼(realfan) 的帖子

抱歉,我这样设置好后  
这里有个错误


无法选择到这个新建的kit 构建




离线hp_201111

只看该作者 7楼 发表于: 2013-07-06
回 楼主(realfan) 的帖子
版主 编译好的静态release版  不错, 在用。 谢谢了!
离线hp_201111

只看该作者 8楼 发表于: 2013-07-06
回 6楼(qingxp9) 的帖子
版主 说了 : 静态release版 如果 不是解压到c:\Qt\目录下,需要修改在qmake.exe同一文件夹下的qt.conf文件。。

离线meiwm

只看该作者 9楼 发表于: 2013-07-06
缺少 Qt5Widgetsd.a 是什么情况 0 0

mingw32-make[1]: *** No rule to make target 'H:/code/5.1.0-rel-static/lib/libQt5Widgetsd.a', needed by 'debug\Qt510Test.exe'.  Stop.
离线meiwm

只看该作者 10楼 发表于: 2013-07-06
搞定了,选成了release--〉debug,
离线彩阳

只看该作者 11楼 发表于: 2013-07-08
realfan大神,我想问问:

编辑C:\QT\qt-everywhere-opensource-src-5.1.0\qtbase\mkspecs\win32-g++\qmake.conf
找到QMAKE_LFLAGS和QMAKE_LFLAGS_DLL,后面赋值为-static
QMAKE_LFLAGS        = -static
QMAKE_LFLAGS_DLL        = -static

是不是可以静态链接相关库,而不是动态链接libgcc_s_dw2-1.dll和mingwm10.dll?
上海Qt开发联盟,热忱地欢迎你的加入!
离线meiwm

只看该作者 12楼 发表于: 2013-07-09
= = 话说 用静态链接qt库的方式木有办法生成dll? 同样的项目动态连接木有问题,这是什么情况?
离线XChinux

只看该作者 13楼 发表于: 2013-07-09
代cavendish发:这些自定制的build(realfan的),可以把信息发到releasing邮件列表,例如像这样 http://lists.qt-project.org/pipermail/releasing/2013-July/001391.html
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线yczwd
只看该作者 14楼 发表于: 2013-07-12
到了这里总是过不去,是什么原因啊?

C:\QT\qt-everywhere-opensource-src-5.1.0>mingw32-make
cd qtbase\ && ( if not exist Makefile C:\QT\qt-everywhere-opensource-src-5.1.0\q
tbase\bin\qmake C:\QT\qt-everywhere-opensource-src-5.1.0\qtbase\qtbase.pro -o Ma
kefile ) && mingw32-make -f Makefile
mingw32-make[1]: Entering directory 'C:/QT/qt-everywhere-opensource-src-5.1.0/qt
base'
cd src\ && ( if not exist Makefile C:\QT\qt-everywhere-opensource-src-5.1.0\qtba
se\bin\qmake C:\QT\qt-everywhere-opensource-src-5.1.0\qtbase\src\src.pro -o Make
file ) && mingw32-make -f Makefile
mingw32-make[2]: Entering directory 'C:/QT/qt-everywhere-opensource-src-5.1.0/qt
base/src'
C:\QT\qt-everywhere-opensource-src-5.1.0\qtbase\bin\qmake -o Makefile src.pro
mingw32-make[2]: Leaving directory 'C:/QT/qt-everywhere-opensource-src-5.1.0/qtb
ase/src'
mingw32-make[2]: Entering directory 'C:/QT/qt-everywhere-opensource-src-5.1.0/qt
base/src'
cd tools\bootstrap\ && ( if not exist Makefile C:\QT\qt-everywhere-opensource-sr
c-5.1.0\qtbase\bin\qmake C:\QT\qt-everywhere-opensource-src-5.1.0\qtbase\src\too
ls\bootstrap\bootstrap.pro -o Makefile ) && mingw32-make -f Makefile
mingw32-make[3]: Entering directory 'C:/QT/qt-everywhere-opensource-src-5.1.0/qt
base/src/tools/bootstrap'
C:\QT\qt-everywhere-opensource-src-5.1.0\qtbase\bin\qmake -o Makefile bootstrap.
pro
mingw32-make[3]: Leaving directory 'C:/QT/qt-everywhere-opensource-src-5.1.0/qtb
ase/src/tools/bootstrap'
mingw32-make[3]: Entering directory 'C:/QT/qt-everywhere-opensource-src-5.1.0/qt
base/src/tools/bootstrap'
mingw32-make -f Makefile.Release
mingw32-make[4]: Entering directory 'C:/QT/qt-everywhere-opensource-src-5.1.0/qt
base/src/tools/bootstrap'
Makefile.Release:229: *** missing separator.  Stop.
mingw32-make[4]: Leaving directory 'C:/QT/qt-everywhere-opensource-src-5.1.0/qtb
ase/src/tools/bootstrap'
Makefile:34: recipe for target 'release' failed
mingw32-make[3]: *** [release] Error 2
mingw32-make[3]: Leaving directory 'C:/QT/qt-everywhere-opensource-src-5.1.0/qtb
ase/src/tools/bootstrap'
Makefile:58: recipe for target 'sub-bootstrap-make_first' failed
mingw32-make[2]: *** [sub-bootstrap-make_first] Error 2
mingw32-make[2]: Leaving directory 'C:/QT/qt-everywhere-opensource-src-5.1.0/qtb
ase/src'
Makefile:42: recipe for target 'sub-src-make_first' failed
mingw32-make[1]: *** [sub-src-make_first] Error 2
mingw32-make[1]: Leaving directory 'C:/QT/qt-everywhere-opensource-src-5.1.0/qtb
ase'
makefile:56: recipe for target 'module-qtbase-make_first' failed
mingw32-make: *** [module-qtbase-make_first] Error 2

C:\QT\qt-everywhere-opensource-src-5.1.0>
离线nasamit
只看该作者 15楼 发表于: 2013-07-14
可以單單用動態連結webkit,但是其他用靜態連結嗎?
离线realfan

只看该作者 16楼 发表于: 2013-07-15
回 11楼(彩阳) 的帖子
我测试结果是这样的。
离线彩阳

只看该作者 17楼 发表于: 2013-07-15
回 14楼(yczwd) 的帖子
查一查“'C:/QT/qt-everywhere-opensource-src-5.1.0/qtb
ase/src/tools/bootstrap'”文件夹中的Makefile和Makefile.Debug和Makefile.Release。
上海Qt开发联盟,热忱地欢迎你的加入!
离线alexltr

只看该作者 18楼 发表于: 2013-07-16
Hi realfan. 我直接下載了你編譯的靜態版來編譯我的程序, 編譯通過,但運行程序出現以下錯誤, 請問一下是什麼原因, 怎麼解決? 謝謝.

QSqlDatabase: QODBC driver not loaded
我不从事IT,只是喜欢Qt。
我不是程序员,只是与程序有缘。
我写程序,只是为了让工作变得简单有序!

                      ----  一个一直在入门的编程学习者
离线yczwd
只看该作者 19楼 发表于: 2013-07-17
我的问题估计是出在环境上,机器装了太多的软件。
后来从新装了系统,在干净的环境中编译就通过了。

另外问下:怎么编译个带webkit的静态库?

我装了ActivePerl,去掉了 skip webkit参数,编译出来的还是不能用,用的时候写出带webkit的程序还是崩溃,或者说少东西
离线realfan

只看该作者 20楼 发表于: 2013-07-17
回 18楼(alexltr) 的帖子
静态编译odbc,需要在pro文件中,加
QTPLUGIN += qsqlodbc

在main.cpp中加
#include<QtPlugin>
Q_IMPORT_PLUGIN(QODBCDriverPlugin)


你试试能否解决问题
离线realfan

只看该作者 21楼 发表于: 2013-07-17
回 19楼(yczwd) 的帖子
静态编译webkit还要装ICU
以前没成功过。后来就再没试。
离线alexltr

只看该作者 22楼 发表于: 2013-07-17
回 20楼(realfan) 的帖子
hi realfan, 謝謝你的回覆. 但按你說的辦法試了, 還是不行.
QSqlDatabase: QODBC driver not loaded
QSqlDatabase: available drivers:
我不从事IT,只是喜欢Qt。
我不是程序员,只是与程序有缘。
我写程序,只是为了让工作变得简单有序!

                      ----  一个一直在入门的编程学习者
离线realfan

只看该作者 23楼 发表于: 2013-07-17
回 22楼(alexltr) 的帖子
能上传你的工程及部分代码吗,我试试。
离线alexltr

只看该作者 24楼 发表于: 2013-07-17
回 23楼(realfan) 的帖子
已通过QTCN管理群把整个工程发到你QQ上,麻烦你指点一下,谢谢。
我不从事IT,只是喜欢Qt。
我不是程序员,只是与程序有缘。
我写程序,只是为了让工作变得简单有序!

                      ----  一个一直在入门的编程学习者
离线realfan

只看该作者 25楼 发表于: 2013-07-18
回 24楼(alexltr) 的帖子
请查收邮件
离线alexltr

只看该作者 26楼 发表于: 2013-07-22
回 25楼(realfan) 的帖子
Hi @realfan, 我按照你添加的内容试了, 编译通过,运行也没有问题。非常感谢!
我不从事IT,只是喜欢Qt。
我不是程序员,只是与程序有缘。
我写程序,只是为了让工作变得简单有序!

                      ----  一个一直在入门的编程学习者
离线tonny.ren
只看该作者 27楼 发表于: 2013-08-20
我把你编译好的静态的直接解压到指定文件夹了  也选择静态编译的Qt版本了  可是一点运行就什么反应也没有 编译输出也什么都看不到
界面上也没有绿色运行那个按纽
离线tonny.ren
只看该作者 28楼 发表于: 2013-08-20
19:58:18: 为项目aaaaaaa执行步骤 ...
19:58:18: 正在启动 "C:\Qt\5.1.0-rel-static\bin\qmake.exe" D:\qt_test\aaaaaaa\aaaaaaa.pro -r -spec dafult "CONFIG+=debug" "CONFIG+=declarative_debug" "CONFIG+=qml_debug"

Could not find qmake configuration file dafult.
Error processing project file: D:\qt_test\aaaaaaa\aaaaaaa.pro
19:58:19: 进程"C:\Qt\5.1.0-rel-static\bin\qmake.exe"退出,退出代码 3 。
Error while building/deploying project aaaaaaa (kit: qt5.1.0 static)
当执行步骤 'qmake'时
19:58:19: Elapsed time: 00:00.
离线ygtq

只看该作者 29楼 发表于: 2013-08-21




还有个问题,已经更改了qt.conf的内容
离线ygtq

只看该作者 30楼 发表于: 2013-08-21
回 29楼(ygtq) 的帖子
求大神指教
楼主,有什么办法吗?
离线ygtq

只看该作者 31楼 发表于: 2013-08-22
回 30楼(ygtq) 的帖子
问题解决了
现在可以静态编译了
但编译出来的程序在关闭时有时会崩溃
楼主知道是怎么回事吗
离线realfan

只看该作者 32楼 发表于: 2013-08-22
回 31楼(ygtq) 的帖子
我觉得你的代码问题可能性较大,如果方便把工程放上来,我看看。
离线ygtq

只看该作者 33楼 发表于: 2013-08-23
回 32楼(realfan) 的帖子
chat.zip (27 K) 下载次数:8

这个是照着亚飞的教程写的局域网聊天程序,略有更改
经过尝试,似乎只要不使用UI界面就不会出问题,之后写的程序不用UI界面都没有出问题
离线yzl20092856
只看该作者 34楼 发表于: 2013-08-23
回 31楼(ygtq) 的帖子
请问问题是怎么解决的...谢谢
离线yzl20092856
只看该作者 35楼 发表于: 2013-08-23
LZ很感谢你能分享这个过程。但是我用你的release有点问题。MinGW32  这个是不是你自己重新搞的编译器。我自动检测没有这个。这样就会导致手动kit前面有个黄色感叹号,其警告,如29楼。
离线realfan

只看该作者 36楼 发表于: 2013-08-23
回 35楼(yzl20092856) 的帖子
编译器用的就是Qt5.1里面带的
离线realfan

只看该作者 37楼 发表于: 2013-08-23
回 33楼(ygtq) 的帖子
用你的代码编译,运行,没发现问题。生成的exe单独运行,试了几次都没问题
离线yzl20092856
只看该作者 38楼 发表于: 2013-08-23
回 36楼(realfan) 的帖子

LZ看看有没有遇到这个情况...
离线ygtq

只看该作者 39楼 发表于: 2013-08-23
回 37楼(realfan) 的帖子
我编译出来的程序在别人电脑上也没有发现问题
但在我自己的电脑上就会出现这样的问题
太奇怪了
快速回复
限100 字节
 
上一个 下一个