On CentOS 7 you don’t need tirpc, just use the standard glibc-headers packages which installs /usr/include/rpc/rpc.h. Does that file exist on your system? I have used many versions of CentOS7 and that file has always been present.
And you should not change any Makefiles.
Please go back to the distributed version of asyn, make sure the glibc-headers package is installed. If you still get an error building please send the complete output of make when building asyn.
From: Tech-talk <tech-talk-bounces at aps.anl.gov> On Behalf Of
Brandon Gunn via Tech-talk
Sent: Wednesday, June 14, 2023 5:20 PM
To: tech-talk at aps.anl.gov
Subject: Issue installing asyn on CentOS 7
Hello,
I have encountered another issue while trying to get EPICS installed on our CentOS 7 machine.
Based on similar posts in the mailing list, it seems to be TIRCP related. Here is the error I get when I try to make:
$ make
make -C ./configure install
make[1]: Entering directory `/home/specadm/EPICS/support/asyn/configure'
make -C O.linux-x86_64 -f ../Makefile TOP=../.. \
T_A=linux-x86_64 install
make[2]: Entering directory `/home/specadm/EPICS/support/asyn/configure/O.linux-x86_64'
perl -CSD /home/specadm/EPICS/epics-base/bin/linux-x86_64/convertRelease.pl checkRelease
make[2]: Leaving directory `/home/specadm/EPICS/support/asyn/configure/O.linux-x86_64'
make[1]: Leaving directory `/home/specadm/EPICS/support/asyn/configure'
make -C ./makeSupport install
make[1]: Entering directory `/home/specadm/EPICS/support/asyn/makeSupport'
make -C O.linux-x86_64 -f ../Makefile TOP=../.. \
T_A=linux-x86_64 install
make[2]: Entering directory `/home/specadm/EPICS/support/asyn/makeSupport/O.linux-x86_64'
make[2]: Nothing to be done for `install'.
make[2]: Leaving directory `/home/specadm/EPICS/support/asyn/makeSupport/O.linux-x86_64'
make[1]: Leaving directory `/home/specadm/EPICS/support/asyn/makeSupport'
make -C ./opi install
make[1]: Entering directory `/home/specadm/EPICS/support/asyn/opi'
make[1]: Nothing to be done for `install'.
make[1]: Leaving directory `/home/specadm/EPICS/support/asyn/opi'
make -C ./asyn install
make[1]: Entering directory `/home/specadm/EPICS/support/asyn/asyn'
make -C O.linux-x86_64 -f ../Makefile TOP=../.. \
T_A=linux-x86_64 install
make[2]: Entering directory `/home/specadm/EPICS/support/asyn/asyn/O.linux-x86_64'
make[2]: Nothing to be done for `install'.
make[2]: Leaving directory `/home/specadm/EPICS/support/asyn/asyn/O.linux-x86_64'
make[1]: Leaving directory `/home/specadm/EPICS/support/asyn/asyn'
make -C asyn/asynPortDriver/unittest install
make[1]: Entering directory `/home/specadm/EPICS/support/asyn/asyn/asynPortDriver/unittest'
make -C O.linux-x86_64 -f ../Makefile TOP=../../../.. \
T_A=linux-x86_64 install
make[2]: Entering directory `/home/specadm/EPICS/support/asyn/asyn/asynPortDriver/unittest/O.linux-x86_64'
/usr/bin/g++ -o asynPortDriverTest -L/home/specadm/EPICS/support/asyn/lib/linux-x86_64 -L/home/specadm/EPICS/epics-base/lib/linux-x86_64 -Wl,-rpath,/home/specadm/EPICS/support/asyn/lib/linux-x86_64 -Wl,-rpath,/home/specadm/EPICS/epics-base/lib/linux-x86_64
-rdynamic -m64 asynPortDriverTest.o -lasyn -ldbRecStd -ldbCore -lca -lCom
/home/specadm/EPICS/support/asyn/lib/linux-x86_64/libasyn.so: undefined reference to `xdr_bytes'
/home/specadm/EPICS/support/asyn/lib/linux-x86_64/libasyn.so: undefined reference to `xdr_free'
/home/specadm/EPICS/support/asyn/lib/linux-x86_64/libasyn.so: undefined reference to `clnt_sperror'
/home/specadm/EPICS/support/asyn/lib/linux-x86_64/libasyn.so: undefined reference to `xdr_bool'
/home/specadm/EPICS/support/asyn/lib/linux-x86_64/libasyn.so: undefined reference to `xdr_int'
/home/specadm/EPICS/support/asyn/lib/linux-x86_64/libasyn.so: undefined reference to `clnt_spcreateerror'
/home/specadm/EPICS/support/asyn/lib/linux-x86_64/libasyn.so: undefined reference to `xdr_string'
/home/specadm/EPICS/support/asyn/lib/linux-x86_64/libasyn.so: undefined reference to `xdr_void'
/home/specadm/EPICS/support/asyn/lib/linux-x86_64/libasyn.so: undefined reference to `xdr_enum'
/home/specadm/EPICS/support/asyn/lib/linux-x86_64/libasyn.so: undefined reference to `clnttcp_create'
/home/specadm/EPICS/support/asyn/lib/linux-x86_64/libasyn.so: undefined reference to `xdr_u_char'
/home/specadm/EPICS/support/asyn/lib/linux-x86_64/libasyn.so: undefined reference to `xdr_u_int'
/home/specadm/EPICS/support/asyn/lib/linux-x86_64/libasyn.so: undefined reference to `xdr_u_short'
/home/specadm/EPICS/support/asyn/lib/linux-x86_64/libasyn.so: undefined reference to `xdr_char'
collect2: error: ld returned 1 exit status
make[2]: *** [asynPortDriverTest] Error 1
make[2]: Leaving directory `/home/specadm/EPICS/support/asyn/asyn/asynPortDriver/unittest/O.linux-x86_64'
make[1]: *** [install.linux-x86_64] Error 2
make[1]: Leaving directory `/home/specadm/EPICS/support/asyn/asyn/asynPortDriver/unittest'
make: *** [asyn/asynPortDriver/unittest.install] Error 2
1) In configure/CONFIG_SITE, I uncommented the line:
2) In asyn/Makefile, I appended this to the very end:
USR_INCLUDES_Linux += -I/usr/include/tirpc
asyn_SYS_LIBS_Linux += tirpc
endif
3) I removed the empty header files from /usr/include/rpc and replaced them with symbolic links pointing at the files in /usr/include/tirpc/rpc
Unfortunately, nothing seems to have any effect on the error generated from make and that seems to have exhausted all solutions I could find in the archives. Any ideas about how to fix this?
P.S.: This machine controls our diffractometer and we are just trying to get spec to talk to our Lakeshore 336 -- both asyn and StreamDevice are necessary for this purpose?