最近想在Ubuntu14.04虚拟机上编写串口通信相关的Qt程序,需要放到开发版上,所以需要在Linux终端上创建,但是随着了解的深入,发现并没有想的简单。首先是Ubuntu14.04的软件库里没有libqt5serialbus5-dev的包,不能像安装libqt5serialport5-dev那样方便;其次是自己的电脑性能不佳,编译Qt源码吃力又耗时。于是,就有了以下的实现方法,模块化编译安装Qt。
一、离线安装包下载
目前Qt支持最高版本的离线安装包是5.12.10的,本人使用的是5.12.8的,因为Qt新版本不支持离线了,现在离线安装包不稳定,目前还可以下载,以后就不知道了,下载地址:(安装包5.多的基本都可以,解压缩和安装不容易出错)

二、安装依赖项
首先,你需要安装编译Qt所需的依赖项。这通常包括编译器、make工具、以及Perl等。对于大多数基于Debian(如Ubuntu)的系统,可以使用以下命令安装这些依赖项:
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install perl
sudo apt-get install libx11-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libfontconfig1-dev libfreetype6-dev libfreetype6
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install perl
sudo apt-get install libx11-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libfontconfig1-dev libfreetype6-dev libfreetype6
三、配置QT
在Qt的源码目录中,运行配置脚本。你可以通过指定一些选项来自定义你的Qt构建。例如,要为桌面环境配置Qt 5,可以使用
./configure -release -opensource -confirm-license -nomake examples -nomake tests LIABLE_LICENSE_ACCEPTED=YES这里是一些常用选项的解释:
-
-release:编译为发布版本。 -
-opensource:使用开源许可。 -
-confirm-license:确认接受许可协议。 -
-nomake examples和-nomake tests:不编译示例和测试程序以节省时间。
LIABLE_LICENSE_ACCEPTED=YES:确认接受许可协议
四 编译Qt
使用make工具编译QT
make -j$(nproc).
五 安装QTsudo make install
六 验证安装
qmake --version
-----以上是安装步骤
一般来说,交叉编译通常会跟串口有关系,Linux版本比较旧的话,编译QT如果使用到了QSerialport或者QSerialbus时候,就会报错,如下:
Unknow modus in QT:serialport、serialbus
遇到这种情况时候,通常有两种情况:一种是serialport、serialbus在编译时候没有被编译生成.so文件,像这种的话,可以执行以下命令来解决
sudo apt-get install libqt5serialport5
sudo apt-get install libqt5serialport5-dev
在安装过程当中,有可能产生文件无法覆盖问题(安装失败),具体提示如下:
E: Unmet dependencies. Try 'apt --fix-broken install
这说明依赖关系轻微损坏,常见于安装中断或版本冲突
解决步骤:
sudo apt --fix-broken install # 自动修复依赖关系 sudo apt update # 更新软件源列表 sudo apt upgrade # 升级已安装的包sudo apt --fix-broken install # 自动修复依赖关系 sudo apt update # 更新软件源列表 sudo apt upgrade # 升级已安装的包sudo apt --fix-broken install # 自动修复依赖关系
sudo apt update # 更新软件源列表
sudo apt upgrade # 升级已安装的包
sudo apt --fix-broken install -o Dpkg::Options::="--force-overwrite" (修复命令失败,提示文件冲突或版本不兼容)
执行完毕后然后在执行:
sudo apt-get install libqt5serialport5
sudo apt-get install libqt5serialport5-dev 即可
若是在/usr/lib下面没有找到QSerialPort、serialbus.so文件,那就需要单独下载QSerialPort、QSerialBus源码来进行编译了
源码下载路径:
https://download.qt.io/archive/qt/5.15/5.15.2/submodules/ (不确定高版本是否能适配qt本身的版本,尽量在网上找对应自己版本的源码来编译)

下载完成后进行解压缩处理
然后cd进入目标文件,在。pro所在目录创建build文件夹,进入build文件夹来qmake .. ,避免污染源码库
cd ./build
qmake ..
make
在执行qmake时候,有可能会发生:
<private/qiodevice_p.h> no such file 这个情况
搜了一下,是因为官方的qt安装已经取消默认安装关于private库的所有源文件,因为这个私有访问在QT官方已经说明了,会很大时候被忽略说着删掉,在安装的库里面就没有这个头文件以及相关的文件,需要额外安装,安装命令如下:(不知道其他的linux操作系统是不是也是如此)。所以需要额外安装这个private库

对于Qt5
sudo apt install qtbase5-private-dev
对于Qt4
sudo apt install libqt4-private-dev
完成后,然后就能正常使用QT中的SerialPort SerialBus库了~
sudo apt --fix-broken install -o Dpkg::Options::="--force-overwrite"
sudo apt --fix-broken install # 自动修复依赖关系 sudo apt update # 更新软件源列表 sudo apt upgrade # 升级已安装的包
浙公网安备 33010602011771号