Hi Jesse,
Sorry, I missed the part of your message that said you had installed libuldaq-1.2.1.
So all you need to do is add these lines to your Makefile.
labjack_SYS_LIBS += uldaq
labjack_SYS_LIBS += usb-1.0
Mark
From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of Jesse Hopkins via Tech-talk <tech-talk at aps.anl.gov>
Sent: Friday, October 11, 2024 4:05 PM
To: EPICS Tech Talk <tech-talk at aps.anl.gov>
Subject: Help adding Measurement Computing support to IOC
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
|