【Linux】Ubuntu14.04虚拟机编译安装qtbase并添加qtserialbus模块
前言
最近想在Ubuntu14.04虚拟机上编写CAN通信相关的Qt程序,但是随着了解的深入,发现并没有想的简单。首先是Ubuntu14.04的软件库里没有libqt5serialbus5-dev的包,不能像安装libqt5serialport5-dev那样方便;其次是自己的电脑性能不佳,编译Qt源码吃力又耗时。于是,就有了以下的实现方法,模块化编译安装Qt。
一、编译环境
Ubuntu14.04 x86_64虚拟机,已安装以下软件包。
git-core flex bison gnupg gperf build-essential zip gawk curl
zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev
lib32readline6-dev lib32ncurses5 lib32z1 x11proto-core-dev libx11-dev
lib32z1-dev libxml2-utils autoconf automake libtool xsltproc imagemagick
gettext texinfo liballegro4-dev lzop u-boot-tools
libxkbcommon-dev libxkbcommon-x11-dev
qtbase、qtserialport和qtserialbus的5.12.10版本源码。
源码链接:https://download.qt.io/archive/qt/5.12/5.12.10/submodules/
二、编译安装
1、编译安装qtbase
qtbase是Qt的基础模块,包含了core、widgets、sql和network等模块,只安装它也足够开发常用的Qt应用。
解压qtbase,
xz -dv qtbase-everywhere-src-5.12.10.tar.xz
tar xvf qtbase-everywhere-src-5.12.10.tar
进入qtbase,创建编译文件夹build,进入并创建自动配置脚本autoconfig.sh,
cd qtbase-everywhere-src-5.12.10
mkdir build
cd build
vim autoconfig.sh
自动配置脚本编辑如下,
../configure \
-prefix /opt/qt-5.12.10-x86_64 \
-opensource \
-confirm-license \
-release \
-strip \
-shared \
-c++std c++11 \
-no-opengl \
-no-openssl \
-nomake examples \
-nomake tests \
-recheck-all \
运行脚本,
sh autoconfig.sh
配置完成,结果如下图所示,
编译安装,
make -j2 && make install
首次编译安装用时约20分钟,若过程没有出现错误,则安装成功。
进入Qt安装目录的bin文件夹下,检查是否安装成功,
cd /opt/qt-5.12.10-x86_64/bin
./qmake -v
有结果如下图所示,说明qtbase编译安装成功了。
为了方便使用qmake编译安装其他模块,可以把相关路径添加到环境变量,
vim ~/.bashrc
在末尾添加如下,
export QT_HOME=/opt/qt-5.12.10-x86_64
export PATH=${QT_HOME}/bin:$PATH
export LD_LIBRARY_PATH=${QT_HOME}/lib
立即生效,
source ~/.bashrc
到此,qtbase已经安装并配置完成,可以使用命令行来编译Qt程序了。
若使用qmake编译完Qt程序后,运行时出现错误如下图所示,
且Qt安装目录的plugins/platforms文件夹下缺少libqxcb.so文件,如下图所示,
这是由于虚拟机的环境缺少xcb相关的依赖,可以尝试安装依赖如下,并重新配置编译安装qtbase,
apt install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev
重装后,查看Qt的plugins/platforms文件夹,有结果如下图所示,则证明可以运行Qt程序了。
2、编译安装qtserialport
qtserialport为Qt提供了串口相关的类,安装后可以开发串口相关的Qt应用。
解压qtserialport,
xz -dv qtserialport-everywhere-src-5.12.10.tar.xz
tar xvf qtserialport-everywhere-src-5.12.10.tar
进入qtserialport目录,创建build,进入并执行qmake,
cd qtserialport-everywhere-src-5.12.10
mkdir build
cd build
qmake ..
结果如下图所示,
然后编译安装,
make && make install
若过程没有出现错误,则安装成功。
3、编译安装qtserialbus
qtserialbus为Qt提供了总线相关的类,安装后可以开发CAN或Modbus相关的Qt应用。
安装qtserialbus需要qtserialport的支持,直接编译安装qtserialbus会出现情况如下图所示,
解压qtserialbus,
xz -dv qtserialbus-everywhere-src-5.12.10.tar.xz
tar -xvf qtserialbus-everywhere-src-5.12.10.tar
进入qtserialbus目录,创建build,并执行qmake,
cd qtserialbus-everywhere-src-5.12.10
mkdir build
cd build
qmake ..
结果如下图所示,
然后编译安装,
make && make install
若过程没有出现错误,则安装成功。
至此,qtserialbus和qtserialport模块已经成功添加,可以在Qt安装目录的lib文件夹下看到有相关的文件,如下图所示,
三、配置IDE
上述步骤完成后,已经可以通过命令行编译Qt程序了,但是想方便点调试Qt程序的话,可以使用qtcreator。
Qt Creator是一款跨平台的、轻量级的Qt集成开发环境(IDE),使用它能够方便快速地完成Qt应用的开发。
安装qtcreator,
apt install qtcreator
安装完毕后,若直接启动qtcreator,很大可能会崩溃,如下图所示,
为了防止冲突,需要把之前配置的Qt环境变量注释掉,
vim ~/.bashrc
#export QT_HOME=/opt/qt-5.12.10-x86_64
#export PATH=${QT_HOME}/bin:$PATH
#export LD_LIBRARY_PATH=${QT_HOME}/lib
source ~/.bashrc
查看Qt版本如下图所示,若仍是5.12.10,可以尝试重新打开命令行终端或重启虚拟机,
启动qtcreator,
qtcreator
进入qtcreator后,点击导航栏Tools,选择Options,进入配置界面,
进入配置界面后,点击右侧选项中的Build&Run,并切换到Qt Versions界面,点击Add添加Qt5.12.10的qmake,然后点击Apply让配置生效,
接着,切换到Kits界面,更改Desktop(default)下的Qt version为Qt5.12.10,点击Apply生效,最后点击OK关闭配置界面,
这样就可以在Ubuntu14.04上使用qtcreator调试serialbus和serialport相关的Qt程序了。