Debian11下编译ADAravis和Motor模块的一条龙过程

Debian11编译EPICS ADAravis记录

一年前整理的上面文,这几天重新走了一遍,有些地方会碰到问题,需要补充些环节,motor模块以前和areaDetector一条龙编译时,总是有问题,当时就没尝试了,这几天尝试了一下,流程再总结如下:

准备:

Debian11的基础安装(我用的是网络安装的虚拟机,选安装包时选ssh服务和网络工具两个选项),git抓包需要自己找渠道设置环境变量翻墙。

root权限下:

#改更新源,网络安装时选科大镜像的话,第一个sed可以省掉
sed -i 's/ftp.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
sed -i 's/security.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
apt-get install git make gcc g++ #编译base需要 


 编译base:

adduser beam
mkdir /half          #以合肥先进光源为例
chown -R beam:beam /half
cd /half
su beam
mkdir epics
cd epics
############下载和编译epics base7#################################
git clone --recursive -b 7.0 https://git.launchpad.net/epics-base base-7.0
ln -s base-7.0 base
cd base
make

EPICS 7 - EPICS Controls


 areaDetector需要的包:

EPICS Products Required for Building areaDetector
areaDetector requires EPICS base. R3.14.12.4 or higher, any 3.15 release should work.

areaDetector also requires asyn. The most recent release of asyn is recommended.

Each areaDetector detector module builds both a library and an EPICS IOC application. To build the library only EPICS base and asynDriver are required. To build the IOC application the synApps modules AUTOSAVE, BUSY, CALC, and SSCAN are required. If the CALC module is built with SNCSEQ support then SNCSEQ is also required. The most recent release of the synApps modules is recommended.

The DEVIOCSTATS and ALIVE modules are optional.

EPICS base, asyn and the synApps modules must be built before building areaDetector.

 su下运行:

apt-get install libx11-dev libxext-dev wget re2c #编译areaDetector需要


######下载和修改synApps的脚本(当前最新版是6.2.1 --2024.1.21)#####

# 1. download the installer script
wget https://raw.githubusercontent.com/EPICS-synApps/support/master/assemble_synApps.sh

# 2. edit assemble_synApps.sh for your version of EPICS base and local directory paths

# 3. (optional) Specify the (new) directory name where synApps will be installed.
#    This is the default:
#    export SYNAPPS_DIR=synApps
#    This directory will be created when assemble_synApps.sh is run.

# 4. download & install the synApps source files:

# 来自:GitHub - EPICS-synApps/support: APS BCDA synApps module: support

修改这个文件,根据上面的说明只保留了下面的模块,就能少下载些:

bash ./assemble_synApps.sh           #一次可能不能把所有的包抓下来,多运行几次

之后进入support目录:

随上面脚本下载的motor7.2.2包直接编译通不过,我直接下载最新版本:

git clone https://github.com/epics-modules/motor.git
cp motor-R7-2-2/configure/RELEASE motor/configure/.

之后再把下面文件motor那一行改一下:

之后直接编译就好了:

make release
make
 apt-get install meson pkg-config  glib-2.0 libxml2-dev #编译下面驱动需要:

之后安装aravis驱动,root权限下:

取ADGenICam — areaDetector 3-11-2-gf866e7e documentation 里的这部分即可:

cd /usr/local
git clone https://github.com/AravisProject/aravis
cd aravis/
meson build
cd build
ninja   #Debian已经有,不用专门装
ninja install

上面这步在写页首文档时没问题,现在这步可能会碰到meson版本低的问题,按这里的指南装好新版本的meson再重做上一步就好了:https://wenku.csdn.net/answer/de4dfc7a917045afbf6e36bf8be1275f

编译后面的ADAravis需要在su下先运行下面两条命令:

cp /usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h /usr/include/.
apt-get install libusb-1.0.0-dev


编译ADGenICam和ADAravis,普通用户权限运行:

cd /half/epics/synApps/support/areaDetector-R3-11/
git clone https://github.com/areaDetector/ADGenICam.git
cd ADGenICam/
makecd ..git clone https://github.com/areaDetector/ADAravis.git
cd ADAravis/
make

上面编译ADAravis时,会碰到这类找不到的问题:

是因为现在安装avaris驱动的时候,已经到了0.10版本,而git clone下来的ADAravis的src里还是0.8版本的,运行下面的命令再重新做一遍就好了:

sed -i "s/-0.8/-0.10/g" aravisApp/src/Makefile
sed -i "s/-0.8/-0.10/g" iocs/aravisIOC/aravisApp/src/Makefile

上面两条替换命令能解决部分问题,但是编译过程中出现的这类问题还不能解决:

不知道这类的编译命令里的这类参数在哪里设置,路过的知道的希望能指点,我就只好这样解决:

cp -rf /usr/local/include/aravis-0.10 /usr/local/include/aravis-0.8

至此ADAravis和motor模块一条龙编译环节就都做好了,后面就是针对具体的摄像头和motor控制器的情况,搭建IOC了。

这个流程手动改文件设置和版本不匹配等问题多了一些环节,相信在那些技术大神的完善下,这些手动冗余的步骤都会慢慢省掉吧。。。

路过的从事相关任务的可以自己走一遍这个过程,Debian12下尝试了一下,很不顺利,希望有人能针对这个以及新版本的openEuler系统也尝试一下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/639420.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

位运算的魅力:使用Redis Bitmap高效处理百万级布尔值

欢迎来到我的博客,代码的世界里,每一行都是一个故事 位运算的魅力:使用Redis Bitmap高效处理百万级布尔值 前言1. Bitmap的基本概念Bitmap的定义和原理为什么Bitmap特别适合处理大量布尔值 2. Redis中的Bitmap操作基础命令高级命令 实际应用场…

IDCNN(迭代扩张卷积神经网络)在NLP-NER任务中的应用

IDCNN(迭代扩张卷积神经网络)在NLP-NER任务中的应用 IDCNN(Iterated Dilated Convolutional Neural Network)是一种特别设计的卷积神经网络(CNN),用于处理自然语言处理(NLP&#xf…

低压防雷箱综合选型应用方案

低压防雷箱是一种用于保护低压配电系统免受雷电过电压的影响的装置,它主要由防雷箱模块、浪涌保护器SPD、接地线等组成。本文将介绍低压防雷箱的作用原理和行业应用解决方案,以及低压防雷箱的选型方法。 低压防雷箱的作用原理 低压防雷箱的作用原理是利…

股东出资透明度提升:企业股东出资信息API的应用

前言 在当今商业环境中,股东出资信息的透明度对于投资者、监管机构以及企业自身的健康发展至关重要。随着企业信息公开化的推进,企业股东出资信息API应运而生,为各方提供了一个便捷、高效的信息获取渠道。本文将探讨企业股东出资信息API如何…

HCIA NAT练习

目录 实验拓扑 实验要求 实验步骤 1、IP分配 2、使用ACL使PC访问外网 3、缺省路由 4、边界路由器公网ip端口配置 测试 实验拓扑 实验要求 1、R2为ISP路由器,其上只能配置ip地址,不得再进行其他的任何配置 2、PC1-PC2可以ping通客户平板和DNS服…

【OJ】牛客链表刷题

题目 1. 链表分割1.1 题目分析1.2 代码 2. 链表的回文结构2.1 题目分析2.2 代码 这里两道与链表有关的题目均来自牛客。 1. 链表分割 1.1 题目分析 因为这里代码不能选择用c语言写,所以选择用c,因为c兼容c。 题目要求分割链表,我们可以直接弄成两个带哨…

基于CanvasLabel的Leaflet矢量数据免切片属性标注实践

目录 前言 一、Leaflet.CanvasLabel 1、开源地址 2、设置参数说明 二、组件集成 1、新建html文件 2、声明样式 3、定义矢量文本渲染器 4、定义地图 5、添加矢量数据 6、最终效果 总结 前言 在一般的业务场景中,针对小量的矢量数据,比如POI兴…

云轴科技ZStack位列IDC云系统软件市场教育行业TOP2

近日,全球IT市场研究和咨询公司IDC发布 《中国云系统软件市场跟踪报告2023H1》 ZStack作为产品化的云基础软件提供商 位居云系统软件市场第一梯队 市场份额位列独立云厂商*第一 营收同比增速最快 教育行业TOP2 在教育行业,云计算已成为教育行业信息化的…

Python 安装 QtDesigner

Python 安装 QtDesigner 对于最新版本的 PyQt6 模块,可以直接使用如下代码来安装 Designer 软件。 pip install PyQt6-tools 安装好以后,需要到 Python 安装目录中寻找对应的启动 exe 文件。 C:\Softwares\Python 3.11.5\Lib\site-packages\qt6_applica…

[小程序]页面事件

一、下拉刷新 1.开启和配置 小程序中开启下拉刷新的方式有两种: ①全局开启下来刷新 在app.json的window节点中,设置enablePullDownRefresh设为ture。 ②局部开启下来刷新 在页面对应的json文件的的window节点中,设置enablePullDownRefresh设…

Qt应用开发(安卓篇)——Hello Qt On Android

一、前言 这一篇从实际出发,讲述如何创建、编译和部署Qt On Android项目。 二、ADB调试 ADB的全称为Android Debug Bridge,就是起到调试桥的作用,主要用于连接计算机与Android 设备,以便进行调试和数据传输。ADB 可以实现以下主要…

uniapp组件库SwipeAction 滑动操作 使用方法

目录 #平台差异说明 #基本使用 #修改按钮样式 #点击事件 #API #Props #Event 该组件一般用于左滑唤出操作菜单的场景,用的最多的是左滑删除操作。 注意 如果把该组件通过v-for用于左滑删除的列表,请保证循环的:key是一个唯一值,可以…

HNU-数据挖掘-实验3-图深度学习

数据挖掘课程实验实验3 图深度学习 计科210X 甘晴void 202108010XXX 文章目录 数据挖掘课程实验<br>实验3 图深度学习实验背景实验要求数据集解析实验内容&#xff08;0&#xff09;基础知识&#xff1a;基于图的深度学习方法浅识&#xff1a;图卷积网络 (GCN)浅识&…

【Linux】第三十二站:命名管道

文章目录 一、命名管道介绍二、编码1.mkfifo2.unlink3.一个简单的例子4.修改 一、命名管道介绍 管道应用的一个限制就是只能在具有共同祖先&#xff08;具有亲缘关系&#xff09;的进程间通信。 如果我们想在不相关的进程之间交换数据&#xff0c;可以使用FIFO文件来做这项工作…

14 STM32 - IIC (时序图+软件源码)

14.1 IIC简介 IIC&#xff08;Inter-Integrated Circuit&#xff09;&#xff0c;中文集成电路总线&#xff0c;是一种串行通信总线&#xff0c;使用多主从架构。I2C串行总线一般有两根信号线&#xff0c;一根是双向的数据线SDA&#xff0c;另一根是时钟线SCL。所有接到I2C总线…

【蓝桥杯备赛Java组】语言基础|竞赛常用库函数|输入输出|String的使用|常见的数学方法|大小写转换

&#x1f3a5; 个人主页&#xff1a;深鱼~&#x1f525;收录专栏&#xff1a;蓝桥杯&#x1f304;欢迎 &#x1f44d;点赞✍评论⭐收藏 目录 一、编程基础 1.1 Java类的创建 1.2 Java方法 1.3 输入输出 1.4 String的使用 二、竞赛常用库函数 1.常见的数学方法 2.大小写转…

邦芒支招:避免薪资谈崩的六个措施

对于求职者而言&#xff0c;我喜欢把回答薪资问题比喻成玩扑克牌&#xff0c;它的目标就是让招聘方先亮出底牌。其原因在于&#xff0c;正如詹姆斯察觉到的&#xff0c;一旦你暴露了具体的薪资数目&#xff0c;你就会陷入要价太高(或者太低)的境地。 以下这些小技巧也许能为…

函数传参之按值传递

定义&#xff1a;所有函数的参数都是按值传递的&#xff0c;这意味着函数外的值被会被赋值到函数内部的参数中&#xff0c;就像从一个变量赋值到另外一个变量一样 **原始值&#xff1a;那么久跟原始值变量的复制一样** **引用值&#xff1a;那么久跟引用值复制一样**变量有按值…

php基础学习之代码框架

一&#xff0c;标记 脚本标记&#xff08;已弃用&#xff09;&#xff1a;<script language"php"> php代码 </script> 标准标记&#xff1a;<?php php代码 ?> 二&#xff0c;基础输出语句 不是函数&#xff0c;…

国内比较好的sap实施商有哪些?

在当今数字化浪潮的推动下&#xff0c;企业的数字化转型已成为企业竞争力的关键因素。而在众多企业应用软件中&#xff0c;SAP&#xff08;系统应用和产品&#xff09;作为全球的企业资源规划&#xff08;ERP&#xff09;解决方案供应商&#xff0c;扮演着至关重要的角色。然而…