QT错误集锦

Ubuntu五笔安装:http://www.kxtry.com/archives/3710
Ubuntu2202的串口解决:http://www.kxtry.com/archives/3718

在Window10安装过程中,千万不要联网。
在Window10安装过程中,千万不要联网。
在Window10安装过程中,千万不要联网。
当前最新版本Windows 10 SDK version 2104 (10.0.20348.0)仍是支持Windows7
为了支持ConPTY故必须安装Windows 10 SDK, version 1903 (10.0.18362.1)的SDK版本。
https://software-static.download.prss.microsoft.com/pr/download/18362.1.190318-1202.19h1_release_WindowsSDK.iso

VS2015最高支持10.0.14393.795版本的SDK,故安装10.0.18362的SDK后,会出现rc.exe的找不到的问题。而Qt5.11.2是不支持vs2017的x86版本,故这里会存在矛盾。

因为VS2015安装不支持的高版本SDK后,需有办法解决,但不确定是否有潜在的风险,故最终升级至VS2017+Qt5.12.12,也只有这个才是最安全的方法。

http://www.kxtry.com/archives/3663   可参照该文档实现SDK版本指定

QSslSocket::sslLibraryBuildVersionString()获取OpenSSL的编译版本


支持平台兼容性测试结果表明,小于含等于Qt5.11.2的版本,是仍然能够在Centos7.0版本上运行起来。Qt5.11.3以上版本,需要升级系统字体问题甚至是LIBC版本才能运行。

此外Qt5.11版本在高DPI的显示方面也进行了较大的优化,是移动平台上的一个分水岭。

此外Qt5.12版本后,不再内置mysql的驱动支持,需要去mysql官方下载mysql驱动进行编译。

https://download.qt.io/new_archive/qt/5.11/5.11.2/


Qt5.12.12的调试信息:https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/qt5_51212/qt.qt5.51212.debug_info.win32_msvc2017/
https://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_51212/qt.qt5.51212.debug_info.gcc_64/

VS2013终于放弃了,主要是因为libyuv的硬件加速优化在Qt5.9.3中Win64编译是无法启用优化的。没有办法,只有升级到VS2015,接受那一坨运行时库的文件了。

Qt 5.15 LTS  下载源码,使用VS2013进行编译,后续相关开发均基于源码编译,包括Linux和Mac。
https://download.qt.io/archive/qt/5.15/5.15.0/single/qt-everywhere-src-5.15.0.tar.xz
Qt5.15版无法使用VS2013进行编译,因为会报各种错误。
Qt5.12版也是无法编译通过,后来在https://wiki.qt.io/Building_Qt_5_from_Git上找到以下一段话:

  • Qt < 5.12: Building ANGLE with Windows SDKs prior to Windows Kit 8 requires the DirectX SDK to be installed, and the path to the d3d_compiler<xx>.dll to be added to the PATH variable.
  • Qt >= 5.12: Qt needs at least a Windows 10 SDK in order to build ANGLE. No additional manual setup is needed

看来,只能使用Qt5.11[也不能被VS2013编译的]的最高版本了。为什么不采用VS2015或高更版本呢?因为不喜欢api-ms-win-xxx这些高版本带来的一坨尾巴。
因为XP版本不再维护了,故后续都使用x64编译了。
Qt5.9.9是支持VS2013 x64的最后一个版本,而Qt5.9.3是Centos和ubuntu安装源自带的版本,其它版本在Linux或Mac下调试存在故障且较难克服。
Qt5.6.3是支持VS2013 x86的最后一个版本。
Qt因为一旦联网,它就会强迫你使用microsoft的帐号登录系统。虽然是可以在登录后,再注销帐号,但可能会导致个人目录与登录帐号不一致。
只有拒绝联网后,才会出现创建脱机登录帐号,也即本地帐号。等使用本地帐号登录系统后,才配置网络。
—————————
Qt4.8.7+Qt5.5.1+VS2010,可以同时支持Qt4/Qt5的开发。
如果有引用到c99的项目代码编译,需要使用vs2013才支持。
———————————–
QT安装包目录:
http://download.qt.io/official_releases
如果上述目录找不到安装包,可能是安装包版本太旧了,此时可以在以下目录下再找,通常情况下,它会归档在以下目录。
http://download.qt.io/new_archive/qt【Qt5.8.0是VS2013的最后一个支持版本,但Qt5.6.x是支持XP系统部署的最后一个版本,其VS2015之后的运行时库较大,对XP支持比较好的,还是VS2010~2013】
在vs2013环境中,编译XP的支持版本,需要开启v120-xp的工具集,具体如启方式如下:
此外仍需安装调试工具:debuging tools for window【WinDbg】
如果提示“Unknow debugger type ‘No Engine’”的提示,则需要检查《构建套件下的带警告提示的选项,其内有一个调试器的选项应该从None改至cdc》

命令行中如下:
cmake -DCMAKE_GENERATOR_TOOLSET=v120_xp ../woterm && cmake –build . –config Release
在CMakeFiles.txt中编译可执行文件是如下这样:
set(CMAKE_EXE_LINKER_FLAGS “${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:WINDOWS,5.01”) #Win32程序
或
set(CMAKE_EXE_LINKER_FLAGS “${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE,5.01”) #Console程序。

VC相关的运行时库
http://download.qt.io/development_releases/prebuilt/vcredist/

————————————————————————————————————–
===============故障集合===================
Android SDK启动提示:Failed to load module “canberra-gtk-module”
sudo apt-get install libcanberra-gtk-module
==========================================
因为跨平台的因素,发现不同版本在Linux和MacOSX是存在差异的,而在Linux和Mac中,它是不带源码映射,故无法直接调试。
在跨平台中,发现目前各个系统引用到的版本是5.9.x,而只有5.9.8是包含的PDB调试文件。故只能直接使用它了。
http://download.qt.io/official_releases/qt/5.9/5.9.8/
5.9.8的Linux版本存在启动故障,且很难克服,此外该版本是需要用Qt帐号安装的。
5.9.3是当前验证的全平台问题,较容易解决的版本,可能是因为多个系统默认已经支持5.9.3的安装如yum和apt。
Linux的符号官网不提供,需要自行编译开发版本:./configure -developer-build -nomake tests -nomake examples

==================================
从5.12版本后,官网不再提供PDB文件下载了,如果想直接调试进Qt核心文件,则需要自已编译了,但编译过程也是让人痛苦的。
所以想不痛苦的话,就只能用5.11版本以下了。

将PDF文件解压至Qt目录下,并在QtCreator中按如下配置

此时是应该可以调试源码的,如果仍然不行,则把工程的原来相关临时目录彻底删除及重新创建工程,应该可以了。
如果仍不行,则可以再把相关映射后的目标文件直接拖进工程中,进行调试。如下图

——————————————
Linux环境下,调试Qt源码如下:
首先是找出原Qt的代码编译目录。
随便创建一个工程,并且进行调试状态。调出【Debugger Log】的目录,然后找fullname的文件提示如下图。
【/home/qt/work/qt】


—————————————-
ubuntu:
报错When executing step “Make”
sudo apt-get install build-essential
————————-
Linux环境下,如下报如下错:
cannot find -lGL
collect2:error:ld returned 1 exit status
则需要安装

sudo yum install mesa-libGL-devel mesa-libGLU-devel #GL核心库。Mesa 3D是一个在MIT许可证下开放源代码的三维计算机图形库,以开源形式实现了OpenGL的应用程序接口。
sudo yum install freeglut-devel #GL工具类

如果是Ubuntu16.04.6则是无法直接安装GL库的,按以下方式可解决:

方法一:apt-get install libgl1-mesa-dev
方法二:abc@ubuntu:~$ find /usr -name libGL*
/usr/lib/x86_64-linux-gnu/libGLEW.so.1.13.0
/usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1
/usr/lib/x86_64-linux-gnu/libhybris-egl/libGLESv2.so.2
/usr/lib/x86_64-linux-gnu/libhybris-egl/libGLESv2.so.2.0.0
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
/usr/lib/x86_64-linux-gnu/libGLEWmx.so.1.13
/usr/lib/x86_64-linux-gnu/libGLEW.so.1.13
/usr/lib/x86_64-linux-gnu/libGLEWmx.so.1.13.0
/usr/lib/x86_64-linux-gnu/libGLU.so.1
/usr/lib/libGL.so
abc@ubuntu:~$ sudo ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 /usr/lib/libGL.so
然后问题就解决了。

亦可尝试

1、缺少头文件
error: GL/gl.h: No such file or directory
解决方式:sudo apt-get install mesa-common-dev

2、编译出现如下错误提示:
/usr/bin/ld: cannot find -lGL
解决方式:sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev

3.提示以下错误:

/home/abc/Qt5.9.8/Tools/QtCreator/lib/Qt/plugins/platforms/../../lib/libQt5XcbQpa.so.5: undefined symbol: FT_Get_Font_Format
5.9.3版本:yum install freetype-devel
5.12.12版本:下载freetype-2.12.1.tar.gz,编译后
并安装至/usr/local/lib目录下,在~/.bashrc下添加export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH。

apt install –reinstall libxcb-xinerama0

——-
在window中,使用qtcreator调试程序时,报如下错误:
Unable to create a debugging engine.
这是因为安装windowsSDK时,没有选择debuging tools for window选项,导致的。
特别是通过“Visual Studio Installer”安装工具安装时,因为采用了默认的方式,导致该选项是没有被选中。故需要重新安装相关相应SDK。
解决问题的方法有如下两个:
第一种,不一定有效,原因是相应选项,有可能没有下载到本地仓库。



没有修改安装目录时,其目录应该是在:C:\ProgramData\Microsoft\VisualStudio\Packages中。
第二种,下载完整的SDK离线安装包。
在百度中搜索:“windows sdk”关键字,然后到其官网下载离线ISO包,进行安装。
安装成功后,可以搜索到cdb.exe执行文件

检查一下Qtcreator是否能自动检测调试工具:

重新配置调试器

———–

 

windos下Qt Creator CMake error: Generator: execution of make failed. Make command was: jom /nologo all
或
Running Windows Runtime device detection.
No winrtrunner.exe found.
Running "C:\Program Files\CMake\bin\cmake.exe -E server "--pipe=\\.\pipe\{ae5c25e8-2419-4b13-a4e3-d9063c758f95}" --experimental" in C:\Users\honey\AppData\Local\Temp\QtCreator-P1XkOA\qtc-cmake-XXEXrQDP.