Qt 4.8.5 静态编译小结
来源:互联网 发布:程序员思维,出门买菜 编辑:程序博客网 时间:2024/04/30 21:43
Qt 4.8.5 静态编译
各处摘录.总结下.
1.下载qt 的源代码qt-everywhere-opensource-src-4.8.5.zip,解压到路径任意,如d:\qt4
2.删除源码包中bin目录下的syncqt和syncqt.dat文件。如不修改将发生 Perl not found in environment - cannot run syncqt 错误。
如果有perl路径应该不需要这个步骤.(未验证没有perl的话是真的需要这个步骤)
3.修改\mkspecs\win32-msvc2010下的qmake.conf文件,将其中的
4.搜索整个qmake.conf文件,将-MD,-MDd对应改成-MT,-MTd,以实现在没有VC库的电脑也能运行Qt程序。
libc.lib libcd.lib libcmt.lib libcmtd.lib msvcrt.lib msvcrtd.lib
C-Release C-Debug /MT /MTd /MD /MDd
/NODEFAULTLIB:"libc.lib" /NODEFAULTLIB:"libcd.lib" /NODEFAULTLIB:"msvcrt.lib" /NODEFAULTLIB:"msvcrtd.lib" /NODEFAULTLIB:"libcmtd.lib" /NODEFAULTLIB:"libcmtd.lib"
-MT 需要在 QMAKE_LCLAGS_RELEASE 后增加
/NODEFAULTLIB:"libc.lib" /NODEFAULTLIB:"msvcrt.lib" /NODEFAULTLIB:"libcd.lib" /NODEFAULTLIB:"libcmtd.lib" /NODEFAULTLIB:"msvcrtd.lib"
-MTd 需要在 QMAKE_LFLAGS_DEBUG 后增加
/NODEFAULTLIB:"libc.lib" /NODEFAULTLIB:"msvcrt.lib" /NODEFAULTLIB:"libcd.lib" /NODEFAULTLIB:"libcmt.lib" /NODEFAULTLIB:"msvcrtd.lib"
这6个库其实只要用其中一个.不然会有重名冲突.
后记:在你以后的工程中可能需要增加的链接。
QMAKE_LIBS_CORE 中 ws2_32.lib
QMAKE_LIBS_GUI 中 imm32.lib winmm.lib
5.VS命令行窗口下进入刚才解压路径如d:\qt4,使用如下命令生成makefile
configure -opensource -confirm-license -release -static -fast -platform win32-msvc2010 -no-qt3support -script -scripttools -qt-zlib -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -qt-sql-sqlite -plugin-sql-sqlite -qt-style-windows -qt-style-windowsxp -qt-style-windowsvista -qt-style-plastique -qt-style-cleanlooks -qt-style-motif -qt-style-cde -nomake demos -nomake examples -nomake docs -mp
静态库其实没必要使用-debug 需要的话使用动态debug库代替.
-debug-and-release -static表示静态编译debug与release版本Qt.-mp表示多核同时编译。
开启"-webkit"之后,编译的时候非常久,而且,中途出现报错,问题很多,建议不要开启了
(可以肯定的是,webkit根本不支持static编译,也就是configure指定了static的时候,这个就一定编译失败)
6. VS命令行窗口下 输入nmake, 开始编译过程,此过程依机器CPU水平决定时间多少,一般耗时约2hrs。如无错误提示即实现了静态编译 。
也可以使用Jom来加速编译.(不知道编译会不会有不同.) jom -j n
7.清理临时文件
这一步很重要,关系到是否能用qt-vs-addin。(据我测试4.8.5并无影响。)
目录下.qmake.cache和configure.cache这保存着你编译时的配置。
Plugin name
Type
Description
qtaccessiblecompatwidgets
Accessibility
Accessibility for Qt 3 support widgets
qtaccessiblewidgets
Accessibility
Accessibility for Qt widgets
qdecorationdefault
Decorations (Qt Extended)
Default style
qdecorationwindows
Decorations (Qt Extended)
Windows style
qgif
Image formats
GIF
qjpeg
Image formats
JPEG
qmng
Image formats
MNG
qico
Image formats
ICO
qsvg
Image formats
SVG
qtiff
Image formats
TIFF
qimsw_multi
Input methods (Qt Extended)
Input Method Switcher
qwstslibmousehandler
Mouse drivers (Qt Extended)
tslib mouse
qgfxtransformed
Graphic drivers (Qt Extended)
Transformed screen
qgfxvnc
Graphic drivers (Qt Extended)
VNC
qscreenvfb
Graphic drivers (Qt Extended)
Virtual frame buffer
qsqldb2
SQL driver
IBM DB2
qsqlibase
SQL driver
Borland InterBase
qsqlite
SQL driver
SQLite version 3
qsqlite2
SQL driver
SQLite version 2
qsqlmysql
SQL driver
MySQL
qsqloci
SQL driver
Oracle (OCI)
qsqlodbc
SQL driver
Open Database Connectivity (ODBC)
qsqlpsql
SQL driver
PostgreSQL
qsqltds
SQL driver
Sybase Adaptive Server (TDS)
qcncodecs
Text codecs
Simplified Chinese (People's Republic of China)
qjpcodecs
Text codecs
Japanese
qkrcodecs
Text codecs
Korean
qtwcodecs
Text codecs
Traditional Chinese (Taiwan)
10.编译完即可使用vs-addin实现Qt程序的编写,且编写好的程序无需任何dlls,只是容量较大,一个简单的程序也需要10+m的空间。这时可使用 UPX 来压缩exe文件,upx压缩一下3.7M+,压缩语句如下:
Usage: upx [-123456789dlthVL] [-qvfk] [-o file] file..
Commands:
-1 compress faster -9 compress better
--best compress best (can be very slow for big files)
-d decompress -l list compressed file
-t test compressed file -V display version number
-h give this help -L display software license
Options:
-q be quiet -v be verbose
-oFILE write output to ` FILE '
-f force compression of suspicious files
--no-color, --mono, --color, --no-progress change look
Backup options:
-k, --backup keep backup files
--no-backup no backup files [ default ]
Overlay options:
--overlay=skip don't compress a file with an overlay
--overlay=copy copy any extra data attached to the file [ default ]
--overlay=strip strip any extra data attached to the file [dangerous]
Options for dos/exe:
--8086 make compressed exe work on any 8086
--no-reloc put no relocations in to the exe header
Options for dos/com:
--8086 make compressed com work on any 8086
Options for dos/sys:
--8086 make compressed sys work on any 8086
Options for djgpp2/coff:
--coff produce COFF output [ default : EXE]
Options for watcom/le:
--le produce LE output [ default : EXE]
- Qt 4.8.5 静态编译小结
- QT 4.8 静态库编译方法
- QT 4.8 静态库编译方法
- QT 4.8 静态库编译方法
- QT 4.8 静态库编译方法
- QT 4.8 静态库编译方法
- QT 4.8 静态库编译方法 (QCreator)
- QT 4.8 静态库编译方法
- QT 4.8 静态库编译方法
- Qt 4.8.7 -> msys2+mingw64 静态编译
- QT静态编译
- 静态编译QT应用程序
- 浅谈 Qt 静态编译
- 如何静态编译QT
- qt 静态编译
- QT静态编译
- QT的静态编译
- vs2010静态编译qt
- 安全联盟宣布与浙江卫视正式签约合作
- Python中的input方法与raw_input方法区别小记
- c/c++常用算法(10) -- 基本排序算法(选择排序)
- js中进制转换
- struts2 <s:submit>国际化时提示警告关于ognl.OgnlException: target is null for setProperty(null的解决方案
- Qt 4.8.5 静态编译小结
- 浮动的div自适应居中显示的js代码
- StrictMode
- uitableview横放显示cell
- RMAN RESTORE FAILS WITH RMAN-06023 BUT THERE ARE BACKUPS AVAILABLE (Doc ID 965122.1)
- 星际译王
- WCF错误记录一
- 联通网络环境上无法访问http://repo1.maven.org/maven2/中央库解决,镜像库添加
- Python学习笔记---基础知识