准备:
在CentOS7上已经成功安装了EPICS base软件包:安装过程参见EPICS -- base的安装步骤详解_yuyuyuliang00的博客-CSDN博客
准备软件包:
synApps_6_1.tar.gz 下载地址:EPICSsynApps包-OS文档类资源-CSDN下载
安装过程:
- 解压synApps_6_1.tar.gz到指定目录/usr/local/EPICS,然后建立一个软链接:
[root@centos7 epics]# tar -xvzf synApps_6_1.tar.gz /usr/local/EPICS/
^C
[root@centos7 epics]# tar -xvzf synApps_6_1.tar.gz -C /usr/local/EPICS/
synApps_6_1/
synApps_6_1/support/
...
synApps_6_1/support/quadEM
[root@centos7 epics]# cd /usr/local/EPICS/
[root@centos7 EPICS]# ls
base base-7.0.3.1 extensions extensions-master synApps_6_1
[root@centos7 EPICS]# ln -s synApps_6_1 synApps
[root@centos7 EPICS]# ls
base base-7.0.3.1 extensions extensions-master synApps synApps_6_1
[root@centos7 EPICS]#
- 进入synApps/support,查看其下的所有文件和目录:
[root@centos7 EPICS]# cd synApps/support/
[root@centos7 support]# pwd
/usr/local/EPICS/synApps/support
[root@centos7 support]# ls
alive-R1-1-1 calc-R3-7-3 dxp-R6-0 LICENSE modbus-R3-0 seq-2.2.8 utils
allenBradley-2-3 camac-R2-7-1 dxpSITORO-R1-2 love-R3-2-7 motor_20200721.tar softGlue-R2-8-2 vac-R1-9
areaDetector-R3-7 caputRecorder-R1-7-2 iocStats-3-1-16 lua motor-R7-2-1 softGlueZynq-R2-0-2 vme-R2-9-2
assemble_synApps.sh configure ip330-R2-9 lua-R2-0 optics-R2-13-3 sscan-R2-11-3 xxx-R6-1
asyn4-38 dac128V-R2-9 ipac-2-15 Makefile quadEM-R9-2-1 std-R3-6 Yokogawa_DAS-R2-0-1
autosave-R5-10 delaygen-R1-2-1 ip-R2-20-1 mca-R7-8 README stream-2-6a
busy-R1-7-2 documentation ipUnidig-R2-11 measComp-R2-3 README.md StreamDevice-2-8-9
- 以autosave-R5-10为示例,说明如何安装synApps下的EPICS模块:
1) 先建立一个软链接,并且进行目录清理
[root@centos7 support]# ln -s autosave-R5-10 autosave # 建立一个软链接
[root@centos7 support]# cd autosave # 进入autosave指向的路径
[root@centos7 autosave]# make clean all # 进行清理
2) 编辑confiure下release文件,更改EPICS_BASE的值:
[root@centos7 autosave]# cat configure/RELEASE
#RELEASE Location of external products
# Run "gnumake clean uninstall install" in the application
# top directory each time this file is changed.
TEMPLATE_TOP=$(EPICS_BASE)/templates/makeBaseApp/top
# EPICS_BASE usually appears last so other apps can override stuff:
EPICS_BASE=/usr/local/EPICS/base # 更改为base的安装路径
-include $(TOP)/../configure/EPICS_BASE.$(EPICS_HOST_ARCH)
#Capfast users may need the following definitions
#CAPFAST_TEMPLATES=
#SCH2EDIF_PATH=
# These lines allow developers to override these RELEASE settings
# without having to modify this file directly.
-include $(TOP)/../RELEASE.local
-include $(TOP)/../RELEASE.$(EPICS_HOST_ARCH).local
-include $(TOP)/configure/RELEASE.loca
3) 执行make进程编译:
[root@centos7 autosave]# make
make -C ./configure install
make[1]: Entering directory `/usr/local/EPICS/synApps_6_1/support/autosave-R5-10/configure'
...
make[1]: Leaving directory `/usr/local/EPICS/synApps_6_1/support/autosave-R5-10/iocBoot'
[root@centos7 autosave]#
3)由于每个模块编译前,都需要修改这个模块的configure/RELEASE文件中EPICS_BASE和SUPPORT的值为系统中base和synApps/support的实际路径,编写了一个bash脚本进行以上修改。
- 在/usr/local/bin下编写一个bash脚本synApps_support.sh,内容如下:
#!/usr/bin/bash
# change the env variable In RELEASE:
# EPICS_BASE=/usr/local/EPICS/base 把模块中的EPICS_BASE的值修改为这里指定的值
# SUPPORT=/usr/local/EPICS/synApps/support 把模块中SUPPORT的值更改为这里指定的值
if [ $# -ne 1 ];then
echo "Usage: $0 dirname/filename"
exit 1
fi
if [ -f $1 ];then
FILENAME=$1
elif [ -d $1 ];then
DIRNAME=$1
if [ -e ${DIRNAME}/configure/RELEASE ];then
FILENAME=${DIRNAME}/configure/RELEASE
elif [ -e ${DIRNAME}/RELEASE ];then
FILENAME=${DIRNAME}/RELEASE
fi
else
FILENAME=""
exit
fi
echo "Filename: ${FILENAME}"
echo -n "Orignal:"
sed -rn '/^[A-Z].*-.*/p' ${FILENAME}
echo -n "New:"
sed -rn "s@(^[A-Z])*-.*@\1@p" ${FILENAME}
sed -ri "s@(^[A-Z])*-.*@\1@" ${FILENAME}
echo -n "Origal: "
sed -rn '/^EPICS_BASE/p' ${FILENAME}
echo -n "New: "
sed -rn 's@(EPICS_BASE=).*@\1/usr/local/EPICS/base@p' ${FILENAME}
sed -ri 's@(EPICS_BASE=).*@\1/usr/local/EPICS/base@' ${FILENAME}
echo -n "Origal: "
sed -rn '/^SUPPORT/p' ${FILENAME}
echo -n "New: "
sed -rn 's@(SUPPORT=).*@\1/usr/local/EPICS/synApps/support@p' ${FILENAME}
sed -ri 's@(SUPPORT=).*@\1/usr/local/EPICS/synApps/support@' ${FILENAME}
- 赋予以上脚本可执行权限:
[root@centos7 bin]# pwd
/usr/local/bin
[root@centos7 bin]# chmod +x synApps_support.sh
- 使用alive模块对以上脚本进行测试,使用方法:synApps_support 模块名:
[root@centos7 support]# ln -s alive-R1-1-1 alive
[root@centos7 support]# synApps_support.sh alive
Filename: alive/configure/RELEASE
Origal: EPICS_BASE=/home/centos7/EPICS/base
New: EPICS_BASE=/usr/local/EPICS/base
Origal: SUPPORT=/home/centos7/EPICS/synApps/support
New: SUPPORT=/usr/local/EPICS/synApps/support
[root@centos7 support]# cd alive
[root@centos7 alive]# make
make -C ./configure install
make[1]: Entering directory `/usr/local/EPICS/synApps_6_1/support/alive-R1-1-1/configure'
...
make[1]: Leaving directory `/usr/local/EPICS/synApps_6_1/support/alive-R1-1-1/tests'
[root@centos7 alive]#
4) 其余模块安装类似,但注意模块之前的依赖关系,被依赖的模块先需要安装。
注意:
1) 安装seq前,需要安装re2c软件