LXQT qtermwidget模块编译

编写目的

记录一次在centos上编译lxqt 的 qtermwidget 模块,并完成python绑定的过程,以及其中遇到的坑。

编译环境

LXQT 是一个开源项目,github地址:https://github.com/lxqt

  • 操作系统: CentOS 7.9
  • 相关软件: Qt5.15.2, python3.6.8, PyQt5.15.2, PyQt5-sip 12.9.1, cmake 3.21.3,gcc 8.3.1(支持c++11编译即可)

准备工作

  • qtermwidget 依赖 lxqt-build-tool 模块,需要下载,git 地址:
    https://github.com/lxqt/qtermwidget.git – 获取的是 master分支(此分支目前支持pyqt5 at 2024年4月24日)
    https://github.com/lxqt/lxqt-build-tools.git – 获取的是 master分支 (qtermwidget 的 readme中 ,有lxqt-build-tools的版本要求)

编译

获取代码后,先进行lxqt-build-tools的编译安装,如下:

cd lxqt-build-tools
make (在我的环境中,什么也没有发生)
make install

再进行qtermwidget 的编译

cd qtermwidget 
mkdir build
cd build
cmake ..  -DBUILD_EXAMPLE=ON -DQTERMWIDGET_USE_UTEMPTER=ON
make
make install

PS: 此时在 /usr/local/lib64 下,放入libqtermwidget.so 动态库文件。

编译Python绑定,这里的实现方式是,编译wheel文件,通过pip进行安装,如下:
接上面的shell

cd ../pyqt
CXXFLAGS="-I$PWD/../lib -I$PWD/../build/lib" LDFLAGS="-L$PWD/../build" sip-wheel --verbose --qmake=/opt/QT5.15.2/bin/qmake

PS: -qmake=/opt/QT5.15.2/bin/qmake 指明的是QT的qmake工具路径

直接执行sip-wheel ,可能会报错,由于此命令,是通过临时目录执行,不好直接到编译目录查看原因,只能先解决,后查看了。
这里遇到的问题是:不能知道 qtermwidget.h 等头文件,和 PyQT5里面的 各种 .sip 文件。
解决方法:
将qtermwidget/lib 和 qtermwidget/build/lib 下的 .h文件,拷贝到QT的include目录, 如下

cd qtermwidget/lib
cp -f *.h /opt/QT5.15.2/include (QT的安装目录的include子目录)
cd qtermwidget/build/lib
cp -f *.h /opt/QT5.15.2/include

# 找到PyQt5的bindings目录
cd /usr/local/lib64/python3.6/site-packages/PyQt5/bindings/
cp -fr * DIR/qtermwidget/pyqt/sip

#再次执行 sip-wheel
cd DIR/qtermwidget/pyqt
CXXFLAGS="-I$PWD/../lib -I$PWD/../build/lib" LDFLAGS="-L$PWD/../build" sip-wheel --verbose --qmake=/opt/QT5.15.2/bin/qmake

命令成功后,将在qtermwidget/pyqt目录下生成:

ls 
#输出
project.py  __pycache__  pyproject.toml  QTermWidget-1.4.0-cp35.cp36.cp37.cp38.cp39-abi3-manylinux2014_x86_64.whl  sip

#通过pip install 安装
pip3 install QTermWidget-1.4.0-cp35.cp36.cp37.cp38.cp39-abi3-manylinux2014_x86_64.whl

#查看python 的安装模块的目录
cd /usr/local/lib64/python3.6/site-packages
ls 
#可以得到安装了 QTermWidget.abi3.so

运行检查

可能的坑

qtermwidget 提供了 yum的安装版本,可以通过
yum install qtermwidget
安装
如果已经安装了此版本的qtermwidget ,编译python的wheel文件时,其内的 QTermWidget.abi3.so 动态库,连接的libqtermwidget5.so.1 动态库,可能直接连接到 安装的qtermwidget 的动态库。
发行版本中,可能缺少最新版本的某些函数,会导致自行编译的 QTermWidget.abi3.so 缺少函数。

解决方法:卸载安装过的 qtermwidget ,如下:

yum remove qtermwidget*

并且在编译环境中,设置 LD_LIBRARY_PATH,添加 /usr/local/lib64
重新sip-wheel 生成新的wheel文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值