Experimental Physics and Industrial Control System
|
Hi Jesse,
Your labjack_LIBS variable is missing the additional libraries which the measComp support code calls, and you might need a labjack_SYSLIBS setting as well. You’ll need to look at the Makefile in the measComp module which builds the test
IOC to work out exactly what you’re going to need, it’s not trivial unfortunately.
This is a situation where the module could make building downstream IOC applications simpler if it installed a cfg/CONFIG_MEASCOMP_MODULE file that sets build variables for use in the IOC Makefiles. The mrfIoc2 module provides a basic example
of doing that.
- Andrew
Complexity comes for free, Simplicity you have to work for.
On 10/11/24, 4:05 PM, "Tech-talk" <tech-talk-bounces at aps.anl.gov> wrote:
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.
----
Jesse Hopkins, PhD
Deputy Director
BioCAT, Sector 18
Advanced Photon Source
|
- Replies:
- Re: Help adding Measurement Computing support to IOC Mark Rivers via Tech-talk
- References:
- Help adding Measurement Computing support to IOC Jesse Hopkins via Tech-talk
- Navigate by Date:
- Prev:
Help adding Measurement Computing support to IOC Jesse Hopkins via Tech-talk
- Next:
Re: Help adding Measurement Computing support to IOC Mark Rivers 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
<2024>
2025
- Navigate by Thread:
- Prev:
Help adding Measurement Computing support to IOC Jesse Hopkins via Tech-talk
- Next:
Re: Help adding Measurement Computing support to IOC Mark Rivers 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
<2024>
2025
|
ANJ, 12 Oct 2024 |
·
Home
·
News
·
About
·
Base
·
Modules
·
Extensions
·
Distributions
·
·
Download
·
Search
·
IRMIS
·
Talk
·
Documents
·
Links
·
Licensing
·
|