Hi Katie,
areaDetector/configure contains EXAMPLE_CONFIG_SITE.local that has the following lines to define the location of glib:
EXAMPLE_CONFIG_SITE.local:# Our system has include files for glib-2.0 in 2 different places
EXAMPLE_CONFIG_SITE.local:GLIB_INCLUDE = /usr/include/glib-2.0 /usr/lib64/glib-2.0/include
EXAMPLE_CONFIG_SITE.local:glib-2.0_DIR = /usr/lib64
If EXAMPLE_CONFIG_SITE.local is copied to CONFIG_SITE.local that will work on some versions of Linux, e.g. RHEL7 and Centos7.
On my system I also build for Ubuntu 18, using a different EPICS_HOST_ARCH=linux-x86_64-ub18. For that I use this file which points to the correct location of glib on Ubuntu 18.
CONFIG_SITE.local.linux-x86_64-ub18:# Our system has include files for glib-2.0 in 2 different places
CONFIG_SITE.local.linux-x86_64-ub18:GLIB_INCLUDE = /usr/include/glib-2.0 /usr/lib/x86_64-linux-gnu/glib-2.0/include
CONFIG_SITE.local.linux-x86_64-ub18:glib-2.0_DIR = /usr/lib/x86_64-linux-gnu
If you are only building on Ubuntu 18 you can use those lines in CONFIG_SITE.local without needed to use the EPICS_HOST_ARCH extension.
Let me know if you have problems.
Mark
From: Tech-talk <tech-talk-bounces at aps.anl.gov>
On Behalf Of Katie Matusik via Tech-talk
Sent: Tuesday, February 18, 2020 3:55 PM
To: tech-talk at aps.anl.gov
Subject: Error compiling ADAravis
I am trying to compile ADAravis on Ubuntu 18.04 and am running into some difficulties. I'm using the following package versions:
epics base-3.15.6
areaDetector-master branch from GitHub
ADGenICam-master branch from GitHub
ADAravis-master branch from GitHub
I installed all prerequisites for the aravis library and compiled aravis 0.7.2 in my /usr/local directory using meson; version 0.7.3 has some header files with function definitions that are incompatible with the master branch of ADAravis
because they require additional inputs (e.g. arvcamera.h defines arv_camera_stop_acquisition (ArvCamera *camera, GError **error) whereas the function call in ADAravis.cpp only provides 'ArvCamera' as an input). I can get ADGenIcam to compile without any problems.
Then when I try to compile ADAravis, I get the following output:
/opt/epics/synApps/support/areaDetector-master/ADAravis# make clean && make
make -C ./configure clean
make[1]: Entering directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/configure'
rm -rf O.linux-x86_64 O.Common
make[1]: Leaving directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/configure'
make -C ./aravisApp clean
make[1]: Entering directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/aravisApp'
make -C ./src clean
make[2]: Entering directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/aravisApp/src'
rm -rf O.linux-x86_64 O.Common
make[2]: Leaving directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/aravisApp/src'
make -C ./Db clean
make[2]: Entering directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/aravisApp/Db'
rm -rf O.linux-x86_64 O.Common
make[2]: Leaving directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/aravisApp/Db'
make -C ./op clean
make[2]: Entering directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/aravisApp/op'
make[2]: Nothing to be done for 'clean'.
make[2]: Leaving directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/aravisApp/op'
make[1]: Leaving directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/aravisApp'
make -C ./iocs clean
make[1]: Entering directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/iocs'
make -C ./aravisIOC clean
make[2]: Entering directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/iocs/aravisIOC'
make -C ./configure clean
make[3]: Entering directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/iocs/aravisIOC/configure'
rm -rf O.linux-x86_64 O.Common
make[3]: Leaving directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/iocs/aravisIOC/configure'
make -C ./aravisApp clean
make[3]: Entering directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/iocs/aravisIOC/aravisApp'
make -C ./src clean
make[4]: Entering directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/iocs/aravisIOC/aravisApp/src'
rm -rf O.linux-x86_64 O.Common
make[4]: Leaving directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/iocs/aravisIOC/aravisApp/src'
make[3]: Leaving directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/iocs/aravisIOC/aravisApp'
make -C ./iocBoot clean
make[3]: Entering directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/iocs/aravisIOC/iocBoot'
make -C ./iocAravis clean
make[4]: Entering directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/iocs/aravisIOC/iocBoot/iocAravis'
make[4]: Nothing to be done for 'clean'.
make[4]: Leaving directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/iocs/aravisIOC/iocBoot/iocAravis'
make[3]: Leaving directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/iocs/aravisIOC/iocBoot'
make[2]: Leaving directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/iocs/aravisIOC'
make[1]: Leaving directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/iocs'
make -C ./configure install
make[1]: Entering directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/configure'
perl -CSD /opt/epics/base/bin/linux-x86_64/makeMakefile.pl O.linux-x86_64 ../..
mkdir O.Common
make -C O.linux-x86_64 -f ../Makefile TOP=../.. \
T_A=linux-x86_64 install
make[2]: Entering directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/configure/O.linux-x86_64'
perl -CSD /opt/epics/base/bin/linux-x86_64/convertRelease.pl checkRelease
make[2]: Leaving directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/configure/O.linux-x86_64'
make[1]: Leaving directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/configure'
make -C ./aravisApp install
make[1]: Entering directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/aravisApp'
make -C ./src install
make[2]: Entering directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/aravisApp/src'
perl -CSD /opt/epics/base/bin/linux-x86_64/makeMakefile.pl O.linux-x86_64 ../../..
mkdir O.Common
make -C O.linux-x86_64 -f ../Makefile TOP=../../.. \
T_A=linux-x86_64 install
make[3]: Entering directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/aravisApp/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 -fPIC -I. -I../O.Common -I. -I. -I.. -I../../../include/compiler/gcc -I../../../include/os/Linux -I../../../include -I/opt/epics/synApps/support/asyn-R4-38/include
-I/opt/epics/synApps/support/areaDetector-master/ADSupport/include/os/Linux -I/opt/epics/synApps/support/areaDetector-master/ADSupport/include -I/opt/epics/synApps/support/areaDetector-master/ADCore/include -I/opt/epics/base/include/compiler/gcc -I/opt/epics/base/include/os/Linux
-I/opt/epics/base/include -I/opt/epics/synApps/support/areaDetector-master/ADGenICam/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/local/include/aravis-0.8 -MM -MF ADAravis.d ../ADAravis.cpp
/usr/bin/g++ -D_GNU_SOURCE -D_DEFAULT_SOURCE -D_X86_64_ -DUNIX -Dlinux -O3 -g -Wall -mtune=generic -m64 -fPIC -I. -I../O.Common -I. -I. -I.. -I../../../include/compiler/gcc -I../../../include/os/Linux -I../../../include -I/opt/epics/synApps/support/asyn-R4-38/include
-I/opt/epics/synApps/support/areaDetector-master/ADSupport/include/os/Linux -I/opt/epics/synApps/support/areaDetector-master/ADSupport/include -I/opt/epics/synApps/support/areaDetector-master/ADCore/include -I/opt/epics/base/include/compiler/gcc -I/opt/epics/base/include/os/Linux
-I/opt/epics/base/include -I/opt/epics/synApps/support/areaDetector-master/ADGenICam/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/local/include/aravis-0.8 -MM -MF arvFeature.d ../arvFeature.cpp
/usr/bin/g++ -D_GNU_SOURCE -D_DEFAULT_SOURCE -D_X86_64_ -DUNIX -Dlinux -O3 -g -Wall -mtune=generic -m64 -fPIC -I. -I../O.Common -I. -I. -I.. -I../../../include/compiler/gcc -I../../../include/os/Linux -I../../../include -I/opt/epics/synApps/support/asyn-R4-38/include
-I/opt/epics/synApps/support/areaDetector-master/ADSupport/include/os/Linux -I/opt/epics/synApps/support/areaDetector-master/ADSupport/include -I/opt/epics/synApps/support/areaDetector-master/ADCore/include -I/opt/epics/base/include/compiler/gcc -I/opt/epics/base/include/os/Linux
-I/opt/epics/base/include -I/opt/epics/synApps/support/areaDetector-master/ADGenICam/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/local/include/aravis-0.8 -c ../arvFeature.cpp
/usr/bin/g++ -D_GNU_SOURCE -D_DEFAULT_SOURCE -D_X86_64_ -DUNIX -Dlinux -O3 -g -Wall -mtune=generic -m64 -fPIC -I. -I../O.Common -I. -I. -I.. -I../../../include/compiler/gcc -I../../../include/os/Linux -I../../../include -I/opt/epics/synApps/support/asyn-R4-38/include
-I/opt/epics/synApps/support/areaDetector-master/ADSupport/include/os/Linux -I/opt/epics/synApps/support/areaDetector-master/ADSupport/include -I/opt/epics/synApps/support/areaDetector-master/ADCore/include -I/opt/epics/base/include/compiler/gcc -I/opt/epics/base/include/os/Linux
-I/opt/epics/base/include -I/opt/epics/synApps/support/areaDetector-master/ADGenICam/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/local/include/aravis-0.8 -c ../ADAravis.cpp
/usr/bin/ar -rc libADAravis.a arvFeature.o ADAravis.o
/usr/bin/ranlib libADAravis.a
make[3]: *** No rule to make target '../../../lib/linux-x86_64/libglib-2.0.a', needed by 'libADAravis.so'. Stop.
make[3]: Leaving directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/aravisApp/src/O.linux-x86_64'
/opt/epics/base/configure/RULES_ARCHS:58: recipe for target 'install.linux-x86_64' failed
make[2]: *** [install.linux-x86_64] Error 2
make[2]: Leaving directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/aravisApp/src'
/opt/epics/base/configure/RULES_DIRS:84: recipe for target 'src.install' failed
make[1]: *** [src.install] Error 2
make[1]: Leaving directory '/opt/epics/synApps/support/areaDetector-master/ADAravis/aravisApp'
/opt/epics/base/configure/RULES_DIRS:84: recipe for target 'aravisApp.install' failed
make: *** [aravisApp.install] Error 2
Libglib-2.0.a exists, but it lives in /usr/lib/x86_64-linux-gnu/libglib-2.0.a. I have tried creating a folder in ADAravis/lib/linux-x86_64 and making a symlink to the x86_64-linux-gnu directory, but then I get a different set of errors,
namely:
/opt/epics/synApps/support/areaDetector-master/ADSupport/lib/linux-x86_64/libcoders.so: undefined reference to `xmlNanoHTTPFrameState'
/opt/epics/synApps/support/areaDetector-master/ADSupport/lib/linux-x86_64/libcoders.so: undefined reference to `xmlNanoHTTPStreaming'
Any help is appreciated and please let me know if you need any more info.
This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have
received this email in error, please notify the system manager. This message contains confidential information and is intended only for the individual named. If you are not the named addressee, you should not disseminate, distribute or copy this email. Please
notify the sender immediately by email if you have received this email by mistake and delete this email from your system. If you are not the intended recipient, you are notified that disclosing, copying, distributing or taking any action in reliance on the
contents of this information is strictly prohibited