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  2024  <20252026  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  <20252026 
<== Date ==> <== Thread ==>

Subject: Strange effect when building EPICS using e3-build-tools (formerly e3)
From: Jörn Dreyer via Tech-talk <[email protected]>
To: [email protected]
Date: Mon, 18 Aug 2025 14:42:43 +0200
Hi,

some time ago I build EPICS using E3 on my OpenSuSE Tumbleweed system when it still used GCC 14. As time progresses gcc 15 became the default compiler on Tubleweed.
Unfortunately this one fails to build EPICS currently. So I decided to move my development into an container using Debian 13 as the OS using gcc 14.2.
I got the complete EPICS installed together with the ADCore, ADGenICam and ADAravis modules that I need to read some Basler cameras.
But when I started my IOC script if fails during loading of the libADAravis with an undefined symbol error (g_direct_hash). This should be defined in libglib.so.

So I took a closer look at the library using ldd:

Building libADArvis.so using e3-build-tools results in:
e3-adaravis/ADAravis/O.7.0.8.1_linux-x86_64$ ldd libadaravis.so 
        linux-vdso.so.1 (0x00007f5eedba8000)
        libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f5eed800000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f5eed710000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f5eedaa8000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5eed51a000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f5eedbaa000)

And compared that to the library I build on my Tumbleweed system using E3:
adaravis/2.3.0+2/lib/linux-x86_64 $ldd libadaravis.so 
        linux-vdso.so.1 (0x00007f41e1c85000)
        libgio-2.0.so.0 => /lib64/libgio-2.0.so.0 (0x00007f41e199d000)
        libgobject-2.0.so.0 => /lib64/libgobject-2.0.so.0 (0x00007f41e193b000)
        libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00007f41e17e4000)
        libusb-1.0.so.0 => /lib64/libusb-1.0.so.0 (0x00007f41e17c2000)
        libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f41e1400000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f41e16cd000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f41e16a0000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f41e1000000)
        libgmodule-2.0.so.0 => /lib64/libgmodule-2.0.so.0 (0x00007f41e1699000)
        libz.so.1 => /lib64/glibc-hwcaps/x86-64-v3/libz.so.1.3.1 (0x00007f41e167d000)
        libmount.so.1 => /lib64/libmount.so.1 (0x00007f41e13a9000)
        libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f41e1377000)
        libffi.so.8 => /lib64/libffi.so.8 (0x00007f41e1672000)
        libpcre2-8.so.0 => /lib64/libpcre2-8.so.0 (0x00007f41e12bb000)
        libudev.so.1 => /lib64/libudev.so.1 (0x00007f41e1276000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f41e1c87000)
        libblkid.so.1 => /lib64/libblkid.so.1 (0x00007f41e1239000)
        libcap.so.2 => /lib64/libcap.so.2 (0x00007f41e122d000)
        libeconf.so.0 => /lib64/libeconf.so.0 (0x00007f41e121f000)


For a crosscheck, I compiled the same under Ubuntu 22.04 using gcc 11.4:

Using e3 resulted in: 
adaravis/2.3.0+2/lib/linux-x86_64$ ldd libadaravis.so 
        linux-vdso.so.1 (0x00007ffe18474000)
        libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f32bf652000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f32bf56b000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f32bf54b000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f32bf322000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f32bf955000)

And for the EPICS build system:
ADAravis/lib/linux-x86_64$ ldd libADAravis.so
        linux-vdso.so.1 (0x00007ffca4d91000)
        libADGenICam.so => /XXX/modules/src/areaDetector/ADGenICam/lib/linux-x86_64/libADGenICam.so (0x00007fd29dc5a000)
        libaravis-0.8.so.0 => /lib/x86_64-linux-gnu/libaravis-0.8.so.0 (0x00007fd29dbba000)
        libgobject-2.0.so.0 => /lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007fd29db5a000)
        libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fd29da20000)
        libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fd29d7f4000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fd29d7d2000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd29d5a9000)
        libADBase.so => /XXX/modules/src/areaDetector/ADCore/lib/linux-x86_64/libADBase.so (0x00007fd29d56e000)
        libasyn.so => /XXX/modules/src/asyn/lib/linux-x86_64/libasyn.so (0x00007fd29d4c7000)
        libnanohttp_stream.so => /XXX/modules/src/areaDetector/ADSupport/lib/linux-x86_64/libnanohttp_stream.so (0x00007fd29d33d000)
        libCom.so.3.18.0 => /XXX/base-7.0.4/lib/linux-x86_64/libCom.so.3.18.0 (0x00007fd29d2c0000)
        libgio-2.0.so.0 => /lib/x86_64-linux-gnu/libgio-2.0.so.0 (0x00007fd29d0e6000)
        libxml2.so.2 => /lib/x86_64-linux-gnu/libxml2.so.2 (0x00007fd29cf04000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fd29cee8000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fd29ce01000)
        libusb-1.0.so.0 => /lib/x86_64-linux-gnu/libusb-1.0.so.0 (0x00007fd29cde1000)
        libffi.so.8 => /lib/x86_64-linux-gnu/libffi.so.8 (0x00007fd29cdd4000)
        libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fd29cd5e000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fd29dc84000)
        libdbCore.so.3.18.0 => /XXX/base-7.0.4/lib/linux-x86_64/libdbCore.so.3.18.0 (0x00007fd29ccc7000)
        libca.so.4.13.6 => /XXX/base-7.0.4/lib/linux-x86_64/libca.so.4.13.6 (0x00007fd29cc5d000)
        libxml2.so => /XXX/modules/src/areaDetector/ADSupport/lib/linux-x86_64/libxml2.so (0x00007fd29cad7000)
        libtirpc.so.3 => /lib/x86_64-linux-gnu/libtirpc.so.3 (0x00007fd29caa9000)
        libzlib.so => /XXX/modules/src/areaDetector/ADSupport/lib/linux-x86_64/libzlib.so (0x00007fd29ca8f000)
        libreadline.so.8 => /lib/x86_64-linux-gnu/libreadline.so.8 (0x00007fd29ca3b000)
        libgmodule-2.0.so.0 => /lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007fd29ca34000)
        libmount.so.1 => /lib/x86_64-linux-gnu/libmount.so.1 (0x00007fd29c9ee000)
        libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007fd29c9c2000)
        libicuuc.so.70 => /lib/x86_64-linux-gnu/libicuuc.so.70 (0x00007fd29c7c7000)
        liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007fd29c79c000)
        libudev.so.1 => /lib/x86_64-linux-gnu/libudev.so.1 (0x00007fd29c772000)
        libgssapi_krb5.so.2 => /lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007fd29c71c000)
        libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007fd29c6ea000)
        libblkid.so.1 => /lib/x86_64-linux-gnu/libblkid.so.1 (0x00007fd29c6b3000)
        libpcre2-8.so.0 => /lib/x86_64-linux-gnu/libpcre2-8.so.0 (0x00007fd29c61c000)
        libicudata.so.70 => /lib/x86_64-linux-gnu/libicudata.so.70 (0x00007fd29a9fe000)
        libkrb5.so.3 => /lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007fd29a931000)
        libk5crypto.so.3 => /lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007fd29a902000)
        libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007fd29a8fc000)
        libkrb5support.so.0 => /lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007fd29a8ee000)
        libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007fd29a8e7000)
        libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007fd29a8d3000)

I checked that e3 puts all the libraries (aravis, glib, gobject, gmodule, usb) on the commandline when linking the library.
So to my surprise they are not referenced in the shared library under Debian when using e3 but when building with the EPICS build system.
But why do they show up on Tumbleweed then?
Any advice how to get that working is appreciated.

Regards

Jörn Dreyer




Replies:
Re: Strange effect when building EPICS using e3-build-tools (formerly e3) Jörn Dreyer via Tech-talk

Navigate by Date:
Prev: Job Opening at ELI-Beamlines Gaman Vojtěch via Tech-talk
Next: Re: Strange effect when building EPICS using e3-build-tools (formerly e3) Jörn Dreyer 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  <20252026 
Navigate by Thread:
Prev: Job Opening at ELI-Beamlines Gaman Vojtěch via Tech-talk
Next: Re: Strange effect when building EPICS using e3-build-tools (formerly e3) Jörn Dreyer 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  <20252026 
ANJ, 19 Mar 2026 · Home · News · About · Talk · Base · Modules · Extensions ·
· Distributions · Download · Documents · Links · Licensing ·