前言 本文主要记录了EPICS Qt在Linux上的安装步骤。这里以loongnix操作系统为例,Ubuntu系统上编译安装步骤类似。 EPICS Qt是一个基于Qt的分层框架,使用Channel Access (CA) and PV Access(PVA)访问EPICS数据。它是为快速开发控制系统图形界面而设计的,最初是在澳大利亚同步加速器开发的。 安装EPICS 这里不再写具体步骤了,总之就是非常简单,下载、解压、编译即可。具体步骤可以参考以前的文章。 安装Qt 直接使用终端安装Qt 1 2 3 4 5 sudo apt update sudo apt install qtbase5-dev qt5-qmake qtcreator sudo apt install qtdeclarative5-dev qttools5-dev # 安装Qt Svg库,编译QWT时需要用到 sudo apt install libqt5svg5-dev 安装QWT Qt EPICS推荐使用Qwt 6.1.4,如果在Ubuntu 20.04上直接通过终端安装也是这个版本。我使用Qwt 6.2.0编译,也是没有问题的,这里以Qwt 6.2.0为例。 先下载Qwt的源码 下载Qwt-6.2.0。 下载完成后解压 1 2 3 4 # 解压tar.bz2 tar -jxvf qwt-6.2.0.tar.bz2 # 解压zip unzip qwt-6.2.0.zip 解压完成后编译Qwt,使用QtCreator或者在终端使用qmake都可以。 然后手动将编译生成的文件复制到以下位置,例: 1 2 3 4 5 6 7 # 复制编译生成的qwt sudo cp -r build-qwt-unknown-Release/lib/* /usr/lib/loongarch64-linux-gnu/ # 复制编译生成的designer插件 sudo cp build-qwt-unknown-Release/designer/plugins/designer/libqwt_designer_plugin.so /usr/lib/loongarch64-linux-gnu/qt5/plugins/designer/ # 复制qwt头文件 sudo mkdir /usr/include/qwt sudo cp qwt-6.2.0/src/*.h /usr/include/qwt 安装ACAI ACAI Channel Access Interface EPICS Qt依赖ACAI提供的Channel Access接口。 1 2 3 4 5 6 7 8 cd /usr/local/epics/modules/ git clone https://github.com/andrewstarritt/acai.git cd acai vi configure/RELEASE.local # 修改EPICS_BASE路径,例: # EPICS_BASE=/usr/local/epics/base-7.0.7 make -j8 # 等待编译完成 安装google protobuf 如果需要EPICS Qt支持EPICS Archiver Appliance,需要安装google protobuf。 1 sudo apt install protobuf-compiler libprotobuf-dev EPICS Qt 首先克隆EPICS Qt的两个代码仓库。 1 2 3 4 # framework and support libraries git clone https://github.com/qtepics/qeframework.git # QEGui display manager git clone https://github.com/qtepics/qegui.git 这里我将代码都放在~/QtEpics目录。 在开始编译前,需要先配置一些环境变量(根据自己的实际情况设置)。具体可以参考 EPICS Qt Environment Variables 1 2 3 4 5 6 7 8 9 10 11 12 export EPICS_HOST_ARCH=linux-loong64 export EPICS_BASE=/usr/local/epics/base-7.0.7 export ACAI=/usr/local/epics/modules/acai export QWT_INCLUDE_PATH=/usr/include/qwt export QWT_ROOT=/usr/lib/loongarch64-linux-gnu export QE_FRAMEWORK="$HOME/QtEpics/qeframework" # 支持PV Access export QE_PVACCESS_SUPPORT=YES # 支持Archiver Appliance export QE_ARCHAPPL_SUPPORT=YES export PROTOBUF_INCLUDE_PATH=/usr/include/google/protobuf export PROTOBUF_LIB_DIR=/usr/lib/loongarch64-linux-gnu 如果环境变量设置了支持Archiver Appliance,需要先编译archapplDataSup。 1 2 cd ~/QtEpics/qeframework/archapplDataSup/ make 编译完成后,可以看到~/QtEpics/qeframework/lib/linux-loong64目录下有libarchapplData.a、libarchapplData.so两个文件。 然后依次编译 qeframework qeplugin qegui。EPICS Qt文档说明需要修改configure/RELEASE文件,但我这里修改后似乎没有生效,可能是使用了Qt Creator的原因,只能通过上面的环境变量设置。 注意:这里设置完环境变量,需要直接通过终端打开Qt Creator。 编译qeframework $HOME/QtEpics/qeframework/qeframeworkSup/project/framework.pro 编译qeplugin $HOME/QtEpics/qeframework/qepluginApp/project/qeplugin.pro 编译qegui $HOME/QtEpics/qegui/qeguiApp/project/QEGuiApp.pro 最后将编译生成的文件复制到以下位置,例: 1 2 3 sudo cp ~/QtEpics/qeframework/lib/linux-loong64/libarchapplData.so /usr/lib/loongarch64-linux-gnu/ sudo cp ~/QtEpics/qeframework/lib/linux-loong64/libQEFramework.so /usr/lib/loongarch64-linux-gnu/ sudo cp ~/QtEpics/qeframework/lib/linux-loong64/designer/libQEPlugin.so /usr/lib/loongarch64-linux-gnu/qt5/plugins/designer/ 运行QEGuiApp 1 2 cd ~/epics/qtepics/qegui/bin/linux-loong64 ./qegui 运行测试 运行时环境变量设置,例: 1 2 3 export QE_ARCHIVE_TYPE=ARCHAPPL export QE_ARCHIVE_LIST="http://192.168.1.2:17665/mgmt/bpl" export EPICS_CA_ADDR_LIST="192.168.1.2:5732 192.168.1.3:6666" 问题汇总 编译过程中可能会遇到一些问题 找不到Qwt的头文件 解决办法: 修改qeframework/qeframeworkSup/project/common/common.pri 1 2 INCLUDEPATH += $$PWD +INCLUDEPATH += $$(QWT_INCLUDE_PATH) 找不到QEFramework的头文件 解决办法: 修改对应项目的项目文件 1 +INCLUDEPATH += $$(QE_FRAMEWORK)/include Windows上编译踩坑 我这里使用的是MinGW编译器,仅供参考。Windows编译安装EPICS,可以参考我的笔记。 ACAI编译报错,这个是由于平台函数的差异导致的报错。 我已经提交了修复补丁,参考 fix build error on windows。 编译 google protobuf 网上有很多关于windows编译google protobuf的文章。请自行搜索解决。 编译 QEFramework 这里需要修改configure/RELEASE.local,示例: 1 2 3 4 5 6 7 8 9 10 EPICS_HOST_ARCH=windows-x64-mingw EPICS_BASE=C:\Users\YourName\.epics\base-7.0.8 ACAI=D:\source\acai QE_FRAMEWORK=D:\source\qeframework QE_PVACCESS_SUPPORT=YES QE_ARCHAPPL_SUPPORT=YES PROTOBUF_INCLUDE_PATH=D:\source\protobuf-3.21.12\src PROTOBUF_LIB_DIR=D:\source\protobuf-3.21.12\build QWT_INCLUDE_PATH=D:\source\qwt-6.2.0\src QWT_ROOT=D:\source\build-qwt-Desktop_Qt_5_15_2_MinGW_64_bit-Release Windows上运行程序 将编译过程中生成的DLL全部复制到qegui程序目录下,大致汇总一下有: qwt.dll,libprotobuf.dll,acai.dll,QEFramework.dll,archapplData.dll(这个是在Windows上才会生成,在qeframework\archapplDataSup\src\O.windows-x64-mingw\目录下可以找到) designer/QEPlugin.dll,这个也很重要,不然qegui加载.ui文件会显示空白。 EPICS相关的DLL: ca.dll,Com.dll,nt.dll,pvAccess.dll,pvData.dll 以及Qt相关的DLL。 参考链接 EPICS Qt at GitHub EPICS Qt Getting Started Archiver Appliance Support for EPICS Qt
前言 本文主要记录了EPICS Qt在Linux上的安装步骤。这里以loongnix操作系统为例,Ubuntu系统上编译安装步骤类似。 EPICS Qt是一个基于Qt的分层框架,使用Channel Access (CA) and PV Access(PVA)访问EPICS数据。它是为快速开发控制系统图形界面而设计的,最初是在澳大利亚同步加速器开发的。 安装EPICS 这里不再写具体步骤了,总之就是非常简单,下载、解压、编译即可。具体步骤可以参考以前的文章。 安装Qt 直接使用终端安装Qt 1 2 3 4 5 sudo apt update sudo apt install qtbase5-dev qt5-qmake qtcreator sudo apt install qtdeclarative5-dev qttools5-dev # 安装Qt Svg库,编译QWT时需要用到 sudo apt install libqt5svg5-dev 安装QWT Qt EPICS推荐使用Qwt 6.1.4,如果在Ubuntu 20.04上直接通过终端安装也是这个版本。我使用Qwt 6.2.0编译,也是没有问题的,这里以Qwt 6.2.0为例。 最新测试:Qwt 6.3.0也可以用 ~ 先下载Qwt的源码 下载Qwt-6.2.0。 下载完成后解压 1 2 3 4 # 解压tar.bz2 tar -jxvf qwt-6.2.0.tar.bz2 # 解压zip unzip qwt-6.2.0.zip 解压完成后编译Qwt,使用QtCreator或者在终端使用qmake都可以。 然后手动将编译生成的文件复制到以下位置,例: 1 2 3 4 5 6 7 # 复制编译生成的qwt sudo cp -r build-qwt-unknown-Release/lib/* /usr/lib/loongarch64-linux-gnu/ # 复制编译生成的designer插件 sudo cp build-qwt-unknown-Release/designer/plugins/designer/libqwt_designer_plugin.so /usr/lib/loongarch64-linux-gnu/qt5/plugins/designer/ # 复制qwt头文件 sudo mkdir /usr/include/qwt sudo cp qwt-6.2.0/src/*.h /usr/include/qwt 安装ACAI ACAI Channel Access Interface EPICS Qt依赖ACAI提供的Channel Access接口。 1 2 3 4 5 6 7 8 cd /usr/local/epics/modules/ git clone https://github.com/andrewstarritt/acai.git cd acai vi configure/RELEASE.local # 修改EPICS_BASE路径,例: # EPICS_BASE=/usr/local/epics/base-7.0.8 make -j8 # 等待编译完成 安装google protobuf 如果需要EPICS Qt支持EPICS Archiver Appliance,需要安装google protobuf。 1 sudo apt install protobuf-compiler libprotobuf-dev EPICS Qt 首先克隆EPICS Qt的两个代码仓库。 1 2 3 4 # framework and support libraries git clone https://github.com/qtepics/qeframework.git # QEGui display manager git clone https://github.com/qtepics/qegui.git 这里我将代码都放在~/QtEpics目录。 在开始编译前,需要先配置一些环境变量(根据自己的实际情况设置)。具体可以参考 EPICS Qt Environment Variables 1 2 3 4 5 6 7 8 9 10 11 12 export EPICS_HOST_ARCH=linux-loong64 export EPICS_BASE=/usr/local/epics/base-7.0.8 export ACAI=/usr/local/epics/modules/acai export QWT_INCLUDE_PATH=/usr/include/qwt export QWT_ROOT=/usr/lib/loongarch64-linux-gnu export QE_FRAMEWORK="$HOME/QtEpics/qeframework" # 支持PV Access export QE_PVACCESS_SUPPORT=YES # 支持Archiver Appliance export QE_ARCHAPPL_SUPPORT=YES export PROTOBUF_INCLUDE_PATH=/usr/include/google/protobuf export PROTOBUF_LIB_DIR=/usr/lib/loongarch64-linux-gnu 如果环境变量设置了支持Archiver Appliance,需要先编译archapplDataSup。 1 2 cd ~/QtEpics/qeframework/archapplDataSup/ make 编译完成后,可以看到~/QtEpics/qeframework/lib/linux-loong64目录下有libarchapplData.a、libarchapplData.so两个文件。 然后依次编译 qeframework qeplugin qegui。EPICS Qt文档说明需要修改configure/RELEASE文件,但我这里修改后似乎没有生效,可能是使用了Qt Creator的原因,只能通过上面的环境变量设置。 注意:这里设置完环境变量,需要直接通过终端打开Qt Creator。 编译qeframework $HOME/QtEpics/qeframework/qeframeworkSup/project/framework.pro 编译qeplugin $HOME/QtEpics/qeframework/qepluginApp/project/qeplugin.pro 编译qegui $HOME/QtEpics/qegui/qeguiApp/project/QEGuiApp.pro 最后将编译生成的文件复制到系统目录,示例: 1 2 3 4 sudo cp /usr/local/epics/modules/acai/lib/linux-loong64/libacai.so* /usr/lib/loongarch64-linux-gnu/ sudo cp ~/QtEpics/qeframework/lib/linux-loong64/libarchapplData.so /usr/lib/loongarch64-linux-gnu/ sudo cp ~/QtEpics/qeframework/lib/linux-loong64/libQEFramework.so /usr/lib/loongarch64-linux-gnu/ sudo cp ~/QtEpics/qeframework/lib/linux-loong64/designer/libQEPlugin.so /usr/lib/loongarch64-linux-gnu/qt5/plugins/designer/ 运行QEGuiApp 1 2 cd ~/epics/qtepics/qegui/bin/linux-loong64 ./qegui 运行测试 运行时环境变量设置,例: 1 2 3 export QE_ARCHIVE_TYPE=ARCHAPPL export QE_ARCHIVE_LIST="http://192.168.1.2:17665/mgmt/bpl" export EPICS_CA_ADDR_LIST="192.168.1.2:5732 192.168.1.3:6666" 问题汇总 编译过程中可能会遇到一些问题 找不到Qwt的头文件 解决办法: 修改qeframework/qeframeworkSup/project/common/common.pri 1 2 INCLUDEPATH += $$PWD +INCLUDEPATH += $$(QWT_INCLUDE_PATH) 找不到QEFramework的头文件 解决办法: 修改对应项目的项目文件 1 +INCLUDEPATH += $$(QE_FRAMEWORK)/include Windows上编译踩坑 我这里使用的是MinGW编译器,仅供参考。Windows编译安装EPICS,可以参考我的笔记。 ACAI编译报错,这个是由于平台函数的差异导致的报错。 我已经提交了修复补丁,参考 fix build error on windows。 编译 google protobuf 网上有很多关于windows编译google protobuf的文章。请自行搜索解决。 编译 QEFramework 这里需要修改configure/RELEASE.local,示例: 1 2 3 4 5 6 7 8 9 10 EPICS_HOST_ARCH=windows-x64-mingw EPICS_BASE=C:\Users\YourName\.epics\base-7.0.8 ACAI=D:\source\acai QE_FRAMEWORK=D:\source\qeframework QE_PVACCESS_SUPPORT=YES QE_ARCHAPPL_SUPPORT=YES PROTOBUF_INCLUDE_PATH=D:\source\protobuf-3.21.12\src PROTOBUF_LIB_DIR=D:\source\protobuf-3.21.12\build QWT_INCLUDE_PATH=D:\source\qwt-6.3.0\src QWT_ROOT=D:\source\qwt-6.3.0\build\Desktop_Qt_5_15_14_MinGW_64_bit-Release Windows上运行程序 将编译过程中生成的DLL全部复制到qegui程序目录下,大致汇总一下有: qwt.dll,libprotobuf.dll,acai.dll,QEFramework.dll,archapplData.dll(这个是在Windows上才会生成,在qeframework\archapplDataSup\src\O.windows-x64-mingw\目录下可以找到) designer/QEPlugin.dll,这个也很重要,不然qegui加载.ui文件会显示空白。 EPICS相关的DLL: ca.dll,Com.dll,nt.dll,pvAccess.dll,pvData.dll 以及Qt相关的DLL。 参考链接 EPICS Qt at GitHub EPICS Qt Getting Started Archiver Appliance Support for EPICS Qt