• 12055阅读
  • 14回复

[共享]Qt5.0.0+MinGW4.7.1静态编译步骤(含相关软件下载) [复制链接]

上一主题 下一主题
离线realfan
 

只看楼主 倒序阅读 楼主  发表于: 2012-12-28
— 本帖被 XChinux 设置为精华(2013-07-13) —

Qt5.0.0+MinGW4.7.1静态编译步骤


本文参考了本站roywillow和mewjerry等帖子内容,结合自己的操作过程整理。将一些软件放在百度网盘,方便取用。在此做个备忘。


一、软件准备:
1.安装ActivePerl-5.16.1.1601-MSWin32-x86-296175
http://pan.baidu.com/share/link?shareid=185661&uk=673227135
解压到目录C:\Perl
2.安装python-3.3.0
http://pan.baidu.com/share/link?shareid=185658&uk=673227135
解压到目录C:\Python33
3.安装TDM-MinGW
http://pan.baidu.com/share/link?shareid=185649&uk=673227135
解压到目录C:\QT\MinGW32
4.安装gdb调试器,调试代码时用
http://pan.baidu.com/share/link?shareid=185654&uk=673227135
解压到C:\QT即可,目录结构C:\Qt\gdb-python-7.5-1-mingw32-bin\
5.下载qt-everywhere-opensource-src-5.0.0.zip,解压到C:\QT


二、配置选项
编辑C:\QT\qt-everywhere-opensource-src-5.0.0\qtbase\mkspecs\win32-g++\qmake.conf
QMAKE_LFLAGS        = -static
......
QMAKE_LFLAGS_DLL        = -static
保存


三、开始-》运行-》cmd,打开命令窗口
转到C:\QT\qt-everywhere-opensource-src-5.0.0>

C:\QT\qt-everywhere-opensource-src-5.0.0>set path=C:\Python33\;C:\Perl\site\bin;C:\Perl\bi
n;C:\Qt\MinGW32\bin;%path%


C:\QT\qt-everywhere-opensource-src-5.0.0>configure.bat -confirm-license -opensource -platform win32-g++ -release -static -ltcg -c++11 -fast -accessibility -rtti -qt-sql-sqlite -qt-sql-odbc -plugin-sql-sqlite -plugin-sql-odbc -qt-zlib -qt-libpng -qt-libjpeg -audio-backend -nomake docs -opengl desktop -no-qml-debug -no-vcproj -no-dbus -nomake tests -nomake examples -nomake demos -qt-freetype


这里编译release静态版本,配置参数可以根据需要设置
过几分钟,如果没有提示错误,就可以
C:\QT\qt-everywhere-opensource-src-5.0.0>mingw32-make
开始编译,直到结束


四、QtCreator配置(安装就不用说了)

打开QT Creator, 菜单Tools==》Option==》Build&Run==》

①Compiler选项卡:     点Add按钮,选MinGW,
     name: MinGW32    Compiler path:C:\Qt\MinGW32\bin\g++.exe
    点击Apply
②Qt Versions选项卡:
        点Add按钮,选择C:\QT\qt-everywhere-opensource-src-5.0.0\qtbase\bin\qmake.exe                                     version name: Qt5.0.0(rel_static)
        点击Apply
③Kits选项卡:
       点Add按钮,name: qt5.0.0rel_static
                            Device type: Desktop
                            Compiler: MinGW32
                            Debuger: 点Manager-》Edit,在弹出的对话框
                                             Engine:GDB Engine
                                             Binary:C:\QT\python_2.7based\gdb-i686-pc-mingw32.exe(调试器解压目录)
                            Qt version:  Qt5.0.0(rel_static)          OK,完成设置。

至此,就可以编译静态的执行文件了。可以另选个目录再编译一个debug动态版,以方便调试时用。







离线roywillow

只看该作者 1楼 发表于: 2012-12-28
其实你可以把perl和python安装好的包直接传上去,这样就是绿色版了。我就是一直用之前装过的一个版本,也不用重新装。
只不过python分离成绿色版的时候注意从系统目录(好像是windows还是system32或者syswow64)里面提取出来一个pythonXX.dll放到python.exe同级目录
至于gdb么,我记得mingw里自带……?跟mingw32-make.exe同级?其实我是qDebug()输出流派……


专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线realfan

只看该作者 2楼 发表于: 2012-12-28
回 1楼(roywillow) 的帖子
说得是,perl,python,mingw都可以做成拷贝即用的。
我用的mingw里自带gdb不好用,跟踪时提示错误。用之前的可以,就独列出来了,其实把好用的覆盖到MinGW中,也可以。
我考虑再做个全绿色的,共享出来,包括编译好的静态包。不知道有没有许可问题。
用你说的x86_64-w64-mingw32-gcc-4.7.2-release-win64_rubenvb,可以编译,但生成的程序还是依赖libstdc++,配置里加了-static-libgcc -static-libstdc++也没搞定。
后来用mewjerry说的TDM版本,解决了这个问题,生成的程序可以独立运行。
离线roywillow

只看该作者 3楼 发表于: 2012-12-29
回 2楼(realfan) 的帖子
那两个参数-static-libgcc -static-libstdc++我是加在QMAKE_LFLAGS那一行里的,毕竟这是要告诉工具链去链接静态库嘛……从4.8开始一直这么用下来没问题
TDM我记得默认就是静态链接,所以加错地依然还是那个效果吧
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线realfan

只看该作者 4楼 发表于: 2012-12-31
是我写错了,居然没注意。非常感谢帮我指出来
现在改过来
离线realfan

只看该作者 5楼 发表于: 2012-12-31
回 3楼(roywillow) 的帖子
写错了,多谢指正
已经改正


离线jiaer

只看该作者 6楼 发表于: 2013-01-01
奇怪,数据库插件编译老是失败,只编译ODBC都失败啊,configure如果带了 -plugin-sql-odbc 的话,会莫名其妙的报找不到sqldriverplugin类指针定义。不知道你们是否已经生成了qsqlodbc5.dll qsqlodbc5d.dll
离线aiff
只看该作者 7楼 发表于: 2013-01-02
real大侠 有没有做好的绿色安装包啊
离线realfan

只看该作者 8楼 发表于: 2013-01-02
回 7楼(aiff) 的帖子
release静态版的已经做好了,动态的正在编译中。
准备做个全绿色的。从QtCreator+MinGW+Python+Perl+release static+dbg_shared,不用安装,拷贝后,在QtCreator中配置一下就能用。
离线aiff
只看该作者 9楼 发表于: 2013-01-02
是啊  我的电脑里面安装了oracle 结果老编译不过去
Running syncqt...
Use of :unique is deprecated at d:\oracle\product\10.2.0\db_1\perl\5.8.3\lib\MSW
in32-x86-multi-thread/Config.pm line 39.
Use of :unique is deprecated at d:\oracle\product\10.2.0\db_1\perl\5.8.3\lib\MSW
in32-x86-multi-thread/Config.pm line 80.
Perl lib version (v5.8.3) doesn't match executable version (v5.16.1) at d:\oracl
e\product\10.2.0\db_1\perl\5.8.3\lib\MSWin32-x86-multi-thread/Config.pm line 32.

Compilation failed in require at C:\Qt\Qt5.0.0\5.0.0\Src\qtbase\bin\syncqt line
53.
BEGIN failed--compilation aborted at C:\Qt\Qt5.0.0\5.0.0\Src\qtbase\bin\syncqt l
ine 53.
syncqt failed, return code 255
离线zhang840208
只看该作者 10楼 发表于: 2013-01-17
请问楼主,“Binary:C:\QT\python_2.7based\gdb-i686-pc-mingw32.exe(调试器解压目录)”这个里面的python_2.7based,楼主有提供下载吗?自己去找一个下载来安装就可以吗?
离线zhang840208
只看该作者 11楼 发表于: 2013-01-17
编译的时候,出现下面的信息,哎,不知道怎么回事。
undefined reference to `_Unwind_Resume'
undefined reference to `__gxx_personality_v0'
离线realfan

只看该作者 12楼 发表于: 2013-01-17
回 10楼(zhang840208) 的帖子
离线realfan

只看该作者 13楼 发表于: 2013-01-17
回 11楼(zhang840208) 的帖子
离线shoelace
只看该作者 14楼 发表于: 2013-01-22
qt-everywhere-opensource-src-5.0.0.zip
我下载的怎么不是zip的,offline.run呢
快速回复
限100 字节
 
上一个 下一个