工作中会遇到这样一种情况:qt应用程序在运行时提示找不到某个qt的动态库。我遇到的是缺少libQt5Websocket.so,因为应用程序是在x86平台+v10上开发,能够正常编译运行,然后移植到rk3588(aarch64架构)上v10时却报错找不到libQt5Websocket.so。
在rk3588+v10编译过程中遇到报错:
qwebsocket_p.h:65:10: fatal error: private/qobject_p.h: 没有那个文件或目录(no such file or directory )
遇到这种情况百思不得其解,后来经过查证才知道以下几点:
麒麟v10系统默认安装的qt是不完整的,有些子模块并没有安装,例如我遇到的问题是websocket模块并没有安装,而自己的项目中正好使用该模块
默认安装的qt在麒麟v10系统下库文件一般在/usr/lib/aarch64-linux-gnu,头文件一般在/usr/include/aarch64-linux-gnu/qt5下。对于已经安装的动态库来说功能正常,但是对于缺少某个模块需要单独编译时存在缺少头文件的情况,上面的例子就是证明。
编译子模块
到qt网站下载对应版本的子模块源码,下载网址:Index of /download.qt.io,按照下图的顺序下载想要编译的子模块即可。
2. 下载到本地解压,通过执行以下命令完成编译
sudo apt-get install qtbase5-private-dev
cd 源码目录
qmake
make
make install
AI写代码
bash
或者通过qtcreator打开子模块源码目录,然
在rk3588+v10编译过程中遇到报错:
qwebsocket_p.h:65:10: fatal error: private/qobject_p.h: 没有那个文件或目录(no such file or directory )
遇到这种情况百思不得其解,后来经过查证才知道以下几点:
麒麟v10系统默认安装的qt是不完整的,有些子模块并没有安装,例如我遇到的问题是websocket模块并没有安装,而自己的项目中正好使用该模块
默认安装的qt在麒麟v10系统下库文件一般在/usr/lib/aarch64-linux-gnu,头文件一般在/usr/include/aarch64-linux-gnu/qt5下。对于已经安装的动态库来说功能正常,但是对于缺少某个模块需要单独编译时存在缺少头文件的情况,上面的例子就是证明。
编译子模块
到qt网站下载对应版本的子模块源码,下载网址:Index of /download.qt.io,按照下图的顺序下载想要编译的子模块即可。
2. 下载到本地解压,通过执行以下命令完成编译
sudo apt-get install qtbase5-private-dev
cd 源码目录
qmake
make
make install
AI写代码
bash
或者通过qtcreator打开子模块源码目录,然
