最近因为有个特殊需要,需要QT3支持,网上找了一圈,发现免费的可能是没有了,高版本的QT倒是有但是根据网上的信息似乎商业版的有适用于windows的QT3。
看着网上各种胡说乱写的,我也就不再搜索浪费时间了,直接自己想办法在cygwin下编译一个吧。
经过一番折腾,我成功编译了出来,还验证了可以用,为了弥补网上QT3在windows下编译资料奇少的遗憾,我整理了一下我的编译步骤,供有需要的朋友参考(虽然QT3已经过时了)。
本地的cygwin环境除了安装常用的开发套件(如make gcc等),还需要安装libX11-devel和libXext-devel,不安装有些东西就没法正常执行了;
在官网download.qt.io下载源码qt-x11-free-3.3.8b.tar,但是建议下载我附件提供的这个源码,因为我已经修改了;
解压源码:tar -xvf qt-x11-free-3.3.8b.tar(7z x qt-x11-free-3.3.8b.7z),如我解压在/home/yichen/qt-x11-free-3.3.8b;
进入/home/yichen/qt-x11-free-3.3.8b目录,设置环境变量如:export QTDIR=/home/yichen/qt-x11-free-3.3.8b;
我想将来安装到/opt/qt3目录下,所以执行./configure -prefix /opt/qt3;
一开始需要提示你是否接受license,按照提示输入yes回车即可;
正常这里面会有些错误:如缺失qt_windows.h、qt_winner未定义、WA不识别、Status重定义、HANDLE重定义等等一些列问题,这些都需要编译者一一解决。这里我附件提供的这个源码,已经将这些问题都修改好了,还将为了解决类型重定义将一些修改的第三方lib头文件放入了extern目录,所以偷懒者直接下载我这个源码包解压,就可以避免这里的错误。
完成configure之后,会有提示执行make编译或执行make confclean清除配置;
执行make;
如果编译中途出现执行uic.exe时提示错误:
uic.exe: error while loading shared libraries: libqt.dll.3.3.8: cannot open shared object file: No such file or directory
这是在bin目录下编译出了uic.exe,在lib目录下编译出了libqt.dll,而uic.exe运行的时候需要libqt.dll库,但是默认路径找不到就出错了,这里为了省事,执行拷过去就可以了:cp ./lib/libqt.dll.3.3.8 /bin/,然后再次执行make即可。
但是如果提示的错误是:
uic.exe: error while loading shared libraries: ?: cannot open shared object file: No such file or directory
这说明是没安装libX11-devel和libXext-devel开发库,安装之后再执行make即可。
最后编译完成了,执行make install耐心等待安装到/opt/qt3目录即可。
我修改过的QT3源码包:qt-x11-free-3.3.8b.7z