EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  <20242025  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  <20242025 
<== Date ==> <== Thread ==>

Subject: Help adding Measurement Computing support to IOC
From: Jesse Hopkins via Tech-talk <tech-talk at aps.anl.gov>
To: EPICS Tech Talk <tech-talk at aps.anl.gov>
Date: Fri, 11 Oct 2024 16:05:11 -0500
Hi folks,

I'm attempting to add support for Measurement Computing devices into an existing IOC (that I currently use with some LabJack devices). However, I'm having an issue with building the IOC.

As far as I can tell, the measurement computing support builds fine (I'm building it as part of synapps, but updated to the latest version of MeasComp in the git as of a couple of days ago). I can run one of the test IOCs that is included with the support in the synapps build without issue (in this case for the E-TC).

The problem comes when I try to add the support to my IOC. I go to rebuild the IOC and I get the following errors:
(main) biocat@dalek:/opt/epics/iocs/epics_iocs/soft_iocs/test$ make
make -C ./configure install
make[1]: Entering directory '/opt/epics/iocs/epics_iocs/soft_iocs/test/configure'
perl -CSD /opt/epics/base/bin/linux-x86_64/makeMakefile.pl O.linux-x86_64 ../..
mkdir -p O.Common
make -C O.linux-x86_64 -f ../Makefile TOP=../.. \
    T_A=linux-x86_64 install
make[2]: Entering directory '/opt/epics/iocs/epics_iocs/soft_iocs/test/configure/O.linux-x86_64'
perl -CSD /opt/epics/base/bin/linux-x86_64/convertRelease.pl checkRelease
make[2]: Leaving directory '/opt/epics/iocs/epics_iocs/soft_iocs/test/configure/O.linux-x86_64'
make[1]: Leaving directory '/opt/epics/iocs/epics_iocs/soft_iocs/test/configure'
make -C ./labjackApp install
make[1]: Entering directory '/opt/epics/iocs/epics_iocs/soft_iocs/test/labjackApp'
make -C ./src install
make[2]: Entering directory '/opt/epics/iocs/epics_iocs/soft_iocs/test/labjackApp/src'
perl -CSD /opt/epics/base/bin/linux-x86_64/makeMakefile.pl O.linux-x86_64 ../../..
mkdir -p O.Common
make -C O.linux-x86_64 -f ../Makefile TOP=../../.. \
    T_A=linux-x86_64 install
make[3]: Entering directory '/opt/epics/iocs/epics_iocs/soft_iocs/test/labjackApp/src/O.linux-x86_64'
/usr/bin/g++  -D_GNU_SOURCE -D_DEFAULT_SOURCE          -D_X86_64_ -DUNIX  -Dlinux      -O3 -g   -Wall      -mtune=generic     -m64  -I. -I../O.Common -I. -I. -I.. -I../../../include/compiler/gcc -I../../../include/os/Linux -I../../../include     -I/opt/epics/synApps_6_3/support/autosave-R5-11/include/os/Linux -I/opt/epics/synApps_6_3/support/autosave-R5-11/include   -I/opt/epics/synApps_6_3/support/asyn-R4-44-2/include   -I/opt/epics/synApps_6_3/support/busy-R1-7-4/include   -I/opt/epics/synApps_6_3/support/LabJack-master/include   -I/opt/epics/synApps_6_3/support/measComp-master/include -I/opt/epics/base/include/compiler/gcc -I/opt/epics/base/include/os/Linux -I/opt/epics/base/include        -MM -MF labjackMain.d  ../labjackMain.cpp
Creating dbd file labjack.dbd
perl -CSD /opt/epics/base/bin/linux-x86_64/dbdExpand.pl   -I. -I.. -I../O.Common -I../../../dbd -I/opt/epics/synApps_6_3/support/autosave-R5-11/dbd -I/opt/epics/synApps_6_3/support/asyn-R4-44-2/dbd -I/opt/epics/synApps_6_3/support/busy-R1-7-4/dbd -I/opt/epics/synApps_6_3/support/LabJack-master/dbd -I/opt/epics/synApps_6_3/support/measComp-master/dbd -I/opt/epics/base/dbd -o labjack.dbd base.dbd asyn.dbd busySupport.dbd asSupport.dbd LabJackSupport.dbd measCompSupport.dbd
perl -CSD /opt/epics/base/bin/linux-x86_64/registerRecordDeviceDriver.pl   -I. -I.. -I../O.Common -I../../../dbd -I/opt/epics/synApps_6_3/support/autosave-R5-11/dbd -I/opt/epics/synApps_6_3/support/asyn-R4-44-2/dbd -I/opt/epics/synApps_6_3/support/busy-R1-7-4/dbd -I/opt/epics/synApps_6_3/support/LabJack-master/dbd -I/opt/epics/synApps_6_3/support/measComp-master/dbd -I/opt/epics/base/dbd    -o labjack_registerRecordDeviceDriver.cpp \
            ../O.Common/labjack.dbd labjack_registerRecordDeviceDriver /opt/epics/iocs/epics_iocs/soft_iocs/test
/usr/bin/g++  -D_GNU_SOURCE -D_DEFAULT_SOURCE          -D_X86_64_ -DUNIX  -Dlinux      -O3 -g   -Wall      -mtune=generic     -m64  -I. -I../O.Common -I. -I. -I.. -I../../../include/compiler/gcc -I../../../include/os/Linux -I../../../include     -I/opt/epics/synApps_6_3/support/autosave-R5-11/include/os/Linux -I/opt/epics/synApps_6_3/support/autosave-R5-11/include   -I/opt/epics/synApps_6_3/support/asyn-R4-44-2/include   -I/opt/epics/synApps_6_3/support/busy-R1-7-4/include   -I/opt/epics/synApps_6_3/support/LabJack-master/include   -I/opt/epics/synApps_6_3/support/measComp-master/include -I/opt/epics/base/include/compiler/gcc -I/opt/epics/base/include/os/Linux -I/opt/epics/base/include        -MM -MF labjack_registerRecordDeviceDriver.d  labjack_registerRecordDeviceDriver.cpp
Installing created dbd file ../../../dbd/labjack.dbd
/usr/bin/g++  -D_GNU_SOURCE -D_DEFAULT_SOURCE          -D_X86_64_ -DUNIX  -Dlinux      -O3 -g   -Wall      -mtune=generic     -m64  -I. -I../O.Common -I. -I. -I.. -I../../../include/compiler/gcc -I../../../include/os/Linux -I../../../include     -I/opt/epics/synApps_6_3/support/autosave-R5-11/include/os/Linux -I/opt/epics/synApps_6_3/support/autosave-R5-11/include   -I/opt/epics/synApps_6_3/support/asyn-R4-44-2/include   -I/opt/epics/synApps_6_3/support/busy-R1-7-4/include   -I/opt/epics/synApps_6_3/support/LabJack-master/include   -I/opt/epics/synApps_6_3/support/measComp-master/include -I/opt/epics/base/include/compiler/gcc -I/opt/epics/base/include/os/Linux -I/opt/epics/base/include        -c labjack_registerRecordDeviceDriver.cpp
/usr/bin/g++  -D_GNU_SOURCE -D_DEFAULT_SOURCE          -D_X86_64_ -DUNIX  -Dlinux      -O3 -g   -Wall      -mtune=generic     -m64  -I. -I../O.Common -I. -I. -I.. -I../../../include/compiler/gcc -I../../../include/os/Linux -I../../../include     -I/opt/epics/synApps_6_3/support/autosave-R5-11/include/os/Linux -I/opt/epics/synApps_6_3/support/autosave-R5-11/include   -I/opt/epics/synApps_6_3/support/asyn-R4-44-2/include   -I/opt/epics/synApps_6_3/support/busy-R1-7-4/include   -I/opt/epics/synApps_6_3/support/LabJack-master/include   -I/opt/epics/synApps_6_3/support/measComp-master/include -I/opt/epics/base/include/compiler/gcc -I/opt/epics/base/include/os/Linux -I/opt/epics/base/include        -c ../labjackMain.cpp
/usr/bin/g++ -o labjack  -L/opt/epics/iocs/epics_iocs/soft_iocs/test/lib/linux-x86_64 -L/opt/epics/base/lib/linux-x86_64 -L/opt/epics/synApps_6_3/support/LabJack-master/lib/linux-x86_64 -L/opt/epics/synApps_6_3/support/asyn-R4-44-2/lib/linux-x86_64 -L/opt/epics/synApps_6_3/support/autosave-R5-11/lib/linux-x86_64 -L/opt/epics/synApps_6_3/support/busy-R1-7-4/lib/linux-x86_64 -L/opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64 -Wl,-rpath,/opt/epics/iocs/epics_iocs/soft_iocs/test/lib/linux-x86_64 -Wl,-rpath,/opt/epics/base/lib/linux-x86_64 -Wl,-rpath,/opt/epics/synApps_6_3/support/LabJack-master/lib/linux-x86_64 -Wl,-rpath,/opt/epics/synApps_6_3/support/asyn-R4-44-2/lib/linux-x86_64 -Wl,-rpath,/opt/epics/synApps_6_3/support/autosave-R5-11/lib/linux-x86_64 -Wl,-rpath,/opt/epics/synApps_6_3/support/busy-R1-7-4/lib/linux-x86_64 -Wl,-rpath,/opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64          -rdynamic -m64         labjack_registerRecordDeviceDriver.o labjackMain.o    -lLabJack -lbusy -lautosave -lasyn -lLabJackM -lmeasComp -ldbRecStd -ldbCore -lca -lCom  
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulAOutScanStop'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulAInScanStop'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulDaqInScan'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulDIn'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulAISetConfigDbl'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulDaqInSetTrigger'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulTIn'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulDevGetConfigStr'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulCLoad'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulAOutScanStatus'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulGetNetDaqDeviceDescriptor'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulGetDaqDeviceInventory'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulCIn'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulDaqInScanStop'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulReleaseDaqDevice'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulAOGetInfo'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulCreateDaqDevice'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulAInScan'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulDaqInScanStatus'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulAInScanStatus'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulTmrPulseOutStop'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulAIn'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulAOutScan'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulDIOGetInfo'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulDConfigPort'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulAOut'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulConnectDaqDevice'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulDBitOut'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulGetErrMsg'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulCClear'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulGetInfoStr'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulDOut'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulAInLoadQueue'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulDConfigBit'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulCConfigScan'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulCInScanStop'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulTmrPulseOutStart'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulAISetConfig'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulAIGetInfo'
/usr/bin/ld: /opt/epics/synApps_6_3/support/measComp-master/lib/linux-x86_64/libmeasComp.so: undefined reference to `ulCInScan'
collect2: error: ld returned 1 exit status
make[3]: *** [/opt/epics/base/configure/RULES_BUILD:231: labjack] Error 1
make[3]: Leaving directory '/opt/epics/iocs/epics_iocs/soft_iocs/test/labjackApp/src/O.linux-x86_64'
make[2]: *** [/opt/epics/base/configure/RULES_ARCHS:58: install.linux-x86_64] Error 2
make[2]: Leaving directory '/opt/epics/iocs/epics_iocs/soft_iocs/test/labjackApp/src'
make[1]: *** [/opt/epics/base/configure/RULES_DIRS:85: src.install] Error 2
make[1]: Leaving directory '/opt/epics/iocs/epics_iocs/soft_iocs/test/labjackApp'
make: *** [/opt/epics/base/configure/RULES_DIRS:85: labjackApp.install] Error 2


Here's the contents of my src/Makefile:
TOP=../..

include $(TOP)/configure/CONFIG
#----------------------------------------
#  ADD MACRO DEFINITIONS AFTER THIS LINE
#=============================

#=============================
# Build the IOC application

PROD_IOC = labjack
# labjack.dbd will be created and installed
DBD += labjack.dbd

# labjack.dbd will be made up from these files:
labjack_DBD += base.dbd

# Include dbd files from all support applications:
labjack_DBD += asyn.dbd
labjack_DBD += busySupport.dbd
labjack_DBD += asSupport.dbd
labjack_DBD += LabJackSupport.dbd
labjack_DBD += measCompSupport.dbd

# Add all the support libraries needed by this IOC
labjack_LIBS += LabJack
labjack_LIBS += busy
labjack_LIBS += autosave
labjack_LIBS += asyn
labjack_LIBS += LabJackM
labjack_LIBS += measComp

# labjack_registerRecordDeviceDriver.cpp derives from labjack.dbd
labjack_SRCS += labjack_registerRecordDeviceDriver.cpp

# Build the main IOC entry point on workstation OSs.
labjack_SRCS_DEFAULT += labjackMain.cpp

# Add support from base/src/vxWorks if needed
#labjack_OBJS_vxWorks += $(EPICS_BASE_BIN)/vxComLibrary

# Finally link to the EPICS Base libraries
labjack_LIBS += $(EPICS_BASE_IOC_LIBS)

#===========================

include $(TOP)/configure/RULES
#----------------------------------------
#  ADD RULES AFTER THIS LINE


In case it helps, I'm attempting to build this on Debian 12, and I did install the libuldaq-1.2.1 vendor drivers as instructed.

If anyone has insight into what's going wrong that would be great. The IOC builds fine if I remove the measComp DBD and LIBS in the Makefile, but otherwise gives the above errors.

All the best.

- Jesse

----
Jesse Hopkins, PhD
Deputy Director
BioCAT, Sector 18
Advanced Photon Source

Replies:
Re: Help adding Measurement Computing support to IOC Johnson, Andrew N. via Tech-talk
Re: Help adding Measurement Computing support to IOC Mark Rivers via Tech-talk
Re: Help adding Measurement Computing support to IOC Mark Rivers via Tech-talk

Navigate by Date:
Prev: RE: synApps quadEM build-time code generation Iain Marcuson via Tech-talk
Next: Re: Help adding Measurement Computing support to IOC Johnson, Andrew N. via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  <20242025 
Navigate by Thread:
Prev: RE: synApps quadEM build-time code generation Iain Marcuson via Tech-talk
Next: Re: Help adding Measurement Computing support to IOC Johnson, Andrew N. via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  <20242025 
ANJ, 12 Oct 2024 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions ·
· Download · Search · IRMIS · Talk · Documents · Links · Licensing ·