FairRootGroup / FairRoot

C++ simulation, reconstruction and analysis framework for particle physics experiments
http://fairroot.gsi.de
Other
57 stars 96 forks source link

RPATH resolution sometimes broken when linking against `FairRoot::FastSim` #1523

Closed dennisklein closed 4 months ago

dennisklein commented 4 months ago

edit: Related https://github.com/FairRootGroup/FairSoft/issues/535


Affected: Ubuntu 20.04 & 22.04, Debian 11 & 12 NOT affected: Debian 10, Fedora 39, macOS

Example from Debian 12:

Singularity> /usr/bin/c++ -Wshadow -Wall -O2 -g -Wl,--enable-new-dtags -z defs CMakeFiles/test_ExSimulation1.dir/test_FairTutorialDet1Geo.cxx.o -o test_ExSimulation1\
                          -Wl,-rpath,/home/dklein/projects/FairRoot4/build_debian12/lib:/fairsoft/jan24_patches/lib\
                          ../../../../lib/libExSimulation1.so.19.0.0\
                          ../../../../lib/libCatch2Main.so.3.4.0\
                          ../../../../lib/libFairFastSim.so.19.0.0\
                          /fairsoft/jan24_patches/lib/libgeant4vmc.so\
                          /fairsoft/jan24_patches/lib/libg4root.so\
                          /fairsoft/jan24_patches/lib/libXmlVGM.so\
                          /fairsoft/jan24_patches/lib/libGeant4GM.so\
                          /fairsoft/jan24_patches/lib/libClhepVGM.so\
                          /fairsoft/jan24_patches/lib/libRootGM.so\
                          /fairsoft/jan24_patches/lib/libBaseVGM.so\
                          /fairsoft/jan24_patches/lib/libG4Tree.so\
                          /fairsoft/jan24_patches/lib/libG4FR.so\
                          /fairsoft/jan24_patches/lib/libG4GMocren.so\
                          /fairsoft/jan24_patches/lib/libG4visHepRep.so\
                          /fairsoft/jan24_patches/lib/libG4RayTracer.so\
                          /fairsoft/jan24_patches/lib/libG4VRML.so\
                          /fairsoft/jan24_patches/lib/libG4ToolsSG.so\
                          /fairsoft/jan24_patches/lib/libG4vis_management.so\
                          /fairsoft/jan24_patches/lib/libG4modeling.so\
                          /fairsoft/jan24_patches/lib/libG4interfaces.so\
                          /fairsoft/jan24_patches/lib/libG4mctruth.so\
                          /fairsoft/jan24_patches/lib/libG4geomtext.so\
                          /fairsoft/jan24_patches/lib/libG4gdml.so\
                          /usr/lib/x86_64-linux-gnu/libxerces-c.so\
                          /fairsoft/jan24_patches/lib/libG3toG4.so\
                          /fairsoft/jan24_patches/lib/libG4error_propagation.so\
                          /fairsoft/jan24_patches/lib/libG4readout.so\
                          /fairsoft/jan24_patches/lib/libG4physicslists.so\
                          /fairsoft/jan24_patches/lib/libG4run.so\
                          /fairsoft/jan24_patches/lib/libG4event.so\
                          /fairsoft/jan24_patches/lib/libG4tracking.so\
                          /fairsoft/jan24_patches/lib/libG4parmodels.so\
                          /fairsoft/jan24_patches/lib/libG4processes.so\
                          /fairsoft/jan24_patches/lib/libG4analysis.so\
                          /usr/lib/x86_64-linux-gnu/libexpat.so\
                          /usr/lib/x86_64-linux-gnu/libz.so\
                          /fairsoft/jan24_patches/lib/libG4digits_hits.so\
                          /fairsoft/jan24_patches/lib/libG4track.so\
                          /fairsoft/jan24_patches/lib/libG4geometry.so\
                          /fairsoft/jan24_patches/lib/libG4materials.so\
                          /fairsoft/jan24_patches/lib/libG4particles.so\
                          /fairsoft/jan24_patches/lib/libG4graphics_reps.so\
                          /fairsoft/jan24_patches/lib/libG4intercoms.so\
                          /fairsoft/jan24_patches/lib/libG4global.so\
                          /fairsoft/jan24_patches/lib/libCLHEP-2.4.7.1.so\
                          /fairsoft/jan24_patches/lib/libG4ptl.so.2.3.3\
                          /fairsoft/jan24_patches/lib/libRint.so.6.30.04\
                          ../../../../lib/libGen.so.19.0.0\
                          ../../../../lib/libExPassive.so.19.0.0\
                          /fairsoft/jan24_patches/lib/libboost_program_options.so.1.83.0\
                          ../../../../lib/libBase.so.19.0.0\
                          ../../../../lib/libParBase.so.19.0.0\
                          ../../../../lib/libAlignment.so.19.0.0\
                          /fairsoft/jan24_patches/lib/libGeomPainter.so.6.30.04\
                          /fairsoft/jan24_patches/lib/libVMCLibrary.so\
                          /fairsoft/jan24_patches/lib/libTree.so.6.30.04\
                          /fairsoft/jan24_patches/lib/libEG.so.6.30.04\
                          /fairsoft/jan24_patches/lib/libPhysics.so.6.30.04\
                          /fairsoft/jan24_patches/lib/libGenVector.so.6.30.04\
                          ../../../../lib/libGeoBase.so.19.0.0\
                          ../../../../lib/libFairTools.so.19.0.0\
                          /fairsoft/jan24_patches/lib/libFairLogger.so.1.11.1\
                          /fairsoft/jan24_patches/lib/libGeom.so.6.30.04\
                          /fairsoft/jan24_patches/lib/libGraf3d.so.6.30.04\
                          /fairsoft/jan24_patches/lib/libGpad.so.6.30.04\
                          /fairsoft/jan24_patches/lib/libGraf.so.6.30.04\
                          /fairsoft/jan24_patches/lib/libHist.so.6.30.04\
                          /fairsoft/jan24_patches/lib/libMatrix.so.6.30.04\
                          /fairsoft/jan24_patches/lib/libMathCore.so.6.30.04\
                          /fairsoft/jan24_patches/lib/libImt.so.6.30.04\
                          /fairsoft/jan24_patches/lib/libMultiProc.so.6.30.04\
                          /fairsoft/jan24_patches/lib/libNet.so.6.30.04\
                          /fairsoft/jan24_patches/lib/libRIO.so.6.30.04\
                          /fairsoft/jan24_patches/lib/libThread.so.6.30.04\
                          /fairsoft/jan24_patches/lib/libCore.so.6.30.04\
                          /fairsoft/jan24_patches/lib/libfmt.a\
                          ../../../../lib/libCatch2.so.3.4.0\
                          -Wl,-rpath-link,/home/dklein/projects/FairRoot4/build_debian12/lib:/fairsoft/jan24_patches/lib

works, but

Singularity> ldd test_ExSimulation1
        linux-vdso.so.1 (0x00007ffe576ff000)
        libExSimulation1.so.19.0.0 => /home/dklein/projects/FairRoot4/build_debian12/lib/libExSimulation1.so.19.0.0 (0x00007fd2b9bf9000)
        libCatch2Main.so.3.4.0 => /home/dklein/projects/FairRoot4/build_debian12/lib/libCatch2Main.so.3.4.0 (0x00007fd2b9bf4000)
        libGeoBase.so.19.0.0 => /home/dklein/projects/FairRoot4/build_debian12/lib/libGeoBase.so.19.0.0 (0x00007fd2b9b6a000)
        libCore.so.6.30 => /fairsoft/jan24_patches/lib/libCore.so.6.30 (0x00007fd2b96bd000)
        libCatch2.so.3.4.0 => /home/dklein/projects/FairRoot4/build_debian12/lib/libCatch2.so.3.4.0 (0x00007fd2b95d2000)
        libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fd2b93ad000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fd2b938d000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd2b91ac000)
        libFairFastSim.so.19.0.0 => /home/dklein/projects/FairRoot4/build_debian12/lib/libFairFastSim.so.19.0.0 (0x00007fd2b919b000)
        libboost_program_options.so.1.83.0 => /fairsoft/jan24_patches/lib/libboost_program_options.so.1.83.0 (0x00007fd2b9132000)
        libExMCStack.so.19.0.0 => /home/dklein/projects/FairRoot4/build_debian12/lib/libExMCStack.so.19.0.0 (0x00007fd2b9118000)
        libBase.so.19.0.0 => /home/dklein/projects/FairRoot4/build_debian12/lib/libBase.so.19.0.0 (0x00007fd2b8faa000)
        libParBase.so.19.0.0 => /home/dklein/projects/FairRoot4/build_debian12/lib/libParBase.so.19.0.0 (0x00007fd2b8f4e000)
        libFairLogger.so.1.11 => /fairsoft/jan24_patches/lib/libFairLogger.so.1.11 (0x00007fd2b8f15000)
        libVMCLibrary.so => /fairsoft/jan24_patches/lib/libVMCLibrary.so (0x00007fd2b8ed9000)
        libGeom.so.6.30 => /fairsoft/jan24_patches/lib/libGeom.so.6.30 (0x00007fd2b8c99000)
        libPhysics.so.6.30 => /fairsoft/jan24_patches/lib/libPhysics.so.6.30 (0x00007fd2b8c4a000)
        libGraf3d.so.6.30 => /fairsoft/jan24_patches/lib/libGraf3d.so.6.30 (0x00007fd2b8b9d000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fd2b8abe000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fd2b8a9f000)
        liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007fd2b8a70000)
        libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x00007fd2b89b2000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fd2b9c5e000)
        libgeant4vmc.so => /fairsoft/jan24_patches/lib/libgeant4vmc.so (0x00007fd2b8866000)
        libEG.so.6.30 => /fairsoft/jan24_patches/lib/libEG.so.6.30 (0x00007fd2b87cb000)
        libG4processes.so => /fairsoft/jan24_patches/lib/libG4processes.so (0x00007fd2b6c3e000)
        libG4particles.so => /fairsoft/jan24_patches/lib/libG4particles.so (0x00007fd2b6b17000)
        libG4global.so => /fairsoft/jan24_patches/lib/libG4global.so (0x00007fd2b6a98000)
        libFairTools.so.19.0.0 => /home/dklein/projects/FairRoot4/build_debian12/lib/libFairTools.so.19.0.0 (0x00007fd2b6a75000)
        libAlignment.so.19.0.0 => /home/dklein/projects/FairRoot4/build_debian12/lib/libAlignment.so.19.0.0 (0x00007fd2b6a69000)
        libGeomPainter.so.6.30 => /fairsoft/jan24_patches/lib/libGeomPainter.so.6.30 (0x00007fd2b6a2c000)
        libGdml.so.6.30 => /fairsoft/jan24_patches/lib/libGdml.so.6.30 (0x00007fd2b69c9000)
        libTree.so.6.30 => /fairsoft/jan24_patches/lib/libTree.so.6.30 (0x00007fd2b682b000)
        libHist.so.6.30 => /fairsoft/jan24_patches/lib/libHist.so.6.30 (0x00007fd2b63fd000)
        libMatrix.so.6.30 => /fairsoft/jan24_patches/lib/libMatrix.so.6.30 (0x00007fd2b6297000)
        libMathCore.so.6.30 => /fairsoft/jan24_patches/lib/libMathCore.so.6.30 (0x00007fd2b6064000)
        libRIO.so.6.30 => /fairsoft/jan24_patches/lib/libRIO.so.6.30 (0x00007fd2b5ca9000)
        libGpad.so.6.30 => /fairsoft/jan24_patches/lib/libGpad.so.6.30 (0x00007fd2b5bc1000)
        libGraf.so.6.30 => /fairsoft/jan24_patches/lib/libGraf.so.6.30 (0x00007fd2b5a69000)
        libg4root.so => not found
        libXmlVGM.so => not found
        libGeant4GM.so => not found
        libRootGM.so => not found
        libG4Tree.so => not found
        libG4FR.so => not found
        libG4GMocren.so => not found
        libG4visHepRep.so => not found
        libG4RayTracer.so => not found
        libG4VRML.so => not found
        libG4ToolsSG.so => not found
        libG4vis_management.so => not found
        libG4modeling.so => not found
        libG4interfaces.so => not found
        libG3toG4.so => not found
        libG4physicslists.so => not found
        libG4run.so => not found
        libG4event.so => not found
        libG4tracking.so => not found
        libG4parmodels.so => not found
        libG4digits_hits.so => not found
        libG4track.so => not found
        libG4geometry.so => not found
        libG4materials.so => not found
        libG4graphics_reps.so => not found
        libRint.so.6.30 => not found
        libG4analysis.so => not found
        libG4intercoms.so => not found
        libCLHEP-2.4.7.1.so => not found
        libBaseVGM.so => not found
        libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007fd2b5a32000)
        libG4analysis.so => not found
        libG4digits_hits.so => not found
        libG4track.so => not found
        libG4geometry.so => not found
        libG4materials.so => not found
        libG4intercoms.so => not found
        libCLHEP-2.4.7.1.so => not found
        libG4intercoms.so => not found
        libCLHEP-2.4.7.1.so => not found
        libCLHEP-2.4.7.1.so => not found
        libXMLIO.so.6.30 => /fairsoft/jan24_patches/lib/libXMLIO.so.6.30 (0x00007fd2b59d2000)
        libImt.so.6.30 => /fairsoft/jan24_patches/lib/libImt.so.6.30 (0x00007fd2b59c0000)
        libNet.so.6.30 => /fairsoft/jan24_patches/lib/libNet.so.6.30 (0x00007fd2b58e5000)
        libThread.so.6.30 => /fairsoft/jan24_patches/lib/libThread.so.6.30 (0x00007fd2b5883000)
        libfreetype.so.6 => /lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007fd2b57b8000)
        libMultiProc.so.6.30 => /fairsoft/jan24_patches/lib/libMultiProc.so.6.30 (0x00007fd2b57ab000)
        libtbb.so.12 => /fairsoft/jan24_patches/lib/libtbb.so.12 (0x00007fd2b5755000)
        libssl.so.3 => /lib/x86_64-linux-gnu/libssl.so.3 (0x00007fd2b56a9000)
        libcrypto.so.3 => /lib/x86_64-linux-gnu/libcrypto.so.3 (0x00007fd2b5227000)
        libpng16.so.16 => /lib/x86_64-linux-gnu/libpng16.so.16 (0x00007fd2b51f1000)
        libbrotlidec.so.1 => /lib/x86_64-linux-gnu/libbrotlidec.so.1 (0x00007fd2b51e4000)
        libbrotlicommon.so.1 => /lib/x86_64-linux-gnu/libbrotlicommon.so.1 (0x00007fd2b51c1000)
dennisklein commented 4 months ago

just in case anyone wonders where those files exist:

Singularity> ldd test_ExSimulation1 | grep "not found" | cut -f2 | cut -d' ' -f1 | xargs -I {} file ${SIMPATH}/lib/{}
/fairsoft/jan24_patches/lib/libg4root.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=57c68a0499b13e7f519496bfb1d3f10c11cfacee, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libXmlVGM.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=e1829c7e8b731dfb2e5cd89201390576a79125d2, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libGeant4GM.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=14b868dccc40cbe23f6eee3282625fe003bafaf4, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libRootGM.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=c16d8bbad4d8fd6f96a01dfd62bba21ef9adc294, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libG4Tree.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=ac8db4e92225c5a485944693f06e2a7f29ce2bce, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libG4FR.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=ed12ae67b30c949f1947c0745197f8dddb4ed993, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libG4GMocren.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=fb04e90343da17a4c428681612538b3b33e07941, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libG4visHepRep.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=ddf82478dca5a29f8da2aaf1276840ef3c772ba8, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libG4RayTracer.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=9942faa64a66676b5bfad97a4714a564d29faf09, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libG4VRML.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=3368a33d352e7973fd8a7b3c9c30e02cb56eb419, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libG4ToolsSG.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=3677a5c461183a180809a8198ec468e6671d973e, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libG4vis_management.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=1dc44451a5c695e8f87bb6f1c89fe075facfd326, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libG4modeling.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=9af57f620661ab56bf7ee28b59bd720a177798a9, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libG4interfaces.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=d22e51bac3ce9478ad16d7a7a008a3bcee5d3b3a, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libG3toG4.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=dc15343fe6fd62869b85a29d103b6ed89bf9757c, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libG4physicslists.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=cf1c7847dea5ac24d410bbb15efa343a7547a6d9, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libG4run.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=4741d949befa743953cd634ba6cdf0b498638763, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libG4event.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=d3b491e105fc987ca3dbe7b6dcef3434ce26b759, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libG4tracking.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=139769be70413502ee82cbe6807c65381bee49f0, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libG4parmodels.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=818a7e297a3b2fea852022d8bfcbc952f4eacd62, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libG4digits_hits.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=2c0ef0f5fc1e289861e745b5f266f694186ed2be, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libG4track.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=47e6a6291a1b6fb243d4d04884c88d5d5cbbcdb7, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libG4geometry.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=06ecac5ded0de84f5c7715b2213dc6616b3112e4, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libG4materials.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=df8f595d7723ae659eee5af3b940f3807566bac9, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libG4graphics_reps.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=40e0fcab7aa4bd89cc9ba4cc5438786af6235456, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libRint.so.6.30: symbolic link to libRint.so.6.30.04
/fairsoft/jan24_patches/lib/libG4analysis.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=d2cd1e0aac15bc7ef340455eeda2967f63375a8c, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libG4intercoms.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=4e455d3e6934796cd384e468fb4522b1d266aaf3, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libCLHEP-2.4.7.1.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=fd9341c7c646fedfaac768dd639c0ff38679f915, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libBaseVGM.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=99583c219aa3ebeefcfcdda095bd853c6746b7c8, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libG4analysis.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=d2cd1e0aac15bc7ef340455eeda2967f63375a8c, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libG4digits_hits.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=2c0ef0f5fc1e289861e745b5f266f694186ed2be, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libG4track.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=47e6a6291a1b6fb243d4d04884c88d5d5cbbcdb7, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libG4geometry.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=06ecac5ded0de84f5c7715b2213dc6616b3112e4, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libG4materials.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=df8f595d7723ae659eee5af3b940f3807566bac9, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libG4intercoms.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=4e455d3e6934796cd384e468fb4522b1d266aaf3, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libCLHEP-2.4.7.1.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=fd9341c7c646fedfaac768dd639c0ff38679f915, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libG4intercoms.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=4e455d3e6934796cd384e468fb4522b1d266aaf3, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libCLHEP-2.4.7.1.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=fd9341c7c646fedfaac768dd639c0ff38679f915, with debug_info, not stripped
/fairsoft/jan24_patches/lib/libCLHEP-2.4.7.1.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=fd9341c7c646fedfaac768dd639c0ff38679f915, with debug_info, not stripped
Singularity> ldd test_ExSimulation1 | grep "not found" | cut -f2 | cut -d' ' -f1 | xargs -I {} du -hs ${SIMPATH}/lib/{}
2.1M    /fairsoft/jan24_patches/lib/libg4root.so
4.7M    /fairsoft/jan24_patches/lib/libXmlVGM.so
6.6M    /fairsoft/jan24_patches/lib/libGeant4GM.so
4.7M    /fairsoft/jan24_patches/lib/libRootGM.so
1.9M    /fairsoft/jan24_patches/lib/libG4Tree.so
1.2M    /fairsoft/jan24_patches/lib/libG4FR.so
3.5M    /fairsoft/jan24_patches/lib/libG4GMocren.so
1.5M    /fairsoft/jan24_patches/lib/libG4visHepRep.so
3.8M    /fairsoft/jan24_patches/lib/libG4RayTracer.so
1008K   /fairsoft/jan24_patches/lib/libG4VRML.so
18M     /fairsoft/jan24_patches/lib/libG4ToolsSG.so
21M     /fairsoft/jan24_patches/lib/libG4vis_management.so
17M     /fairsoft/jan24_patches/lib/libG4modeling.so
2.5M    /fairsoft/jan24_patches/lib/libG4interfaces.so
4.9M    /fairsoft/jan24_patches/lib/libG3toG4.so
46M     /fairsoft/jan24_patches/lib/libG4physicslists.so
17M     /fairsoft/jan24_patches/lib/libG4run.so
8.7M    /fairsoft/jan24_patches/lib/libG4event.so
7.1M    /fairsoft/jan24_patches/lib/libG4tracking.so
2.9M    /fairsoft/jan24_patches/lib/libG4parmodels.so
20M     /fairsoft/jan24_patches/lib/libG4digits_hits.so
2.2M    /fairsoft/jan24_patches/lib/libG4track.so
39M     /fairsoft/jan24_patches/lib/libG4geometry.so
12M     /fairsoft/jan24_patches/lib/libG4materials.so
4.8M    /fairsoft/jan24_patches/lib/libG4graphics_reps.so
0       /fairsoft/jan24_patches/lib/libRint.so.6.30
82M     /fairsoft/jan24_patches/lib/libG4analysis.so
6.1M    /fairsoft/jan24_patches/lib/libG4intercoms.so
18M     /fairsoft/jan24_patches/lib/libCLHEP-2.4.7.1.so
2.6M    /fairsoft/jan24_patches/lib/libBaseVGM.so
82M     /fairsoft/jan24_patches/lib/libG4analysis.so
20M     /fairsoft/jan24_patches/lib/libG4digits_hits.so
2.2M    /fairsoft/jan24_patches/lib/libG4track.so
39M     /fairsoft/jan24_patches/lib/libG4geometry.so
12M     /fairsoft/jan24_patches/lib/libG4materials.so
6.1M    /fairsoft/jan24_patches/lib/libG4intercoms.so
18M     /fairsoft/jan24_patches/lib/libCLHEP-2.4.7.1.so
6.1M    /fairsoft/jan24_patches/lib/libG4intercoms.so
18M     /fairsoft/jan24_patches/lib/libCLHEP-2.4.7.1.so
18M     /fairsoft/jan24_patches/lib/libCLHEP-2.4.7.1.so
dennisklein commented 4 months ago
Singularity> readelf -d test_ExSimulation1

Dynamic section at offset 0x21d10 contains 34 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libExSimulation1.so.19.0.0]
 0x0000000000000001 (NEEDED)             Shared library: [libCatch2Main.so.3.4.0]
 0x0000000000000001 (NEEDED)             Shared library: [libGeoBase.so.19.0.0]
 0x0000000000000001 (NEEDED)             Shared library: [libCore.so.6.30]
 0x0000000000000001 (NEEDED)             Shared library: [libCatch2.so.3.4.0]
 0x0000000000000001 (NEEDED)             Shared library: [libstdc++.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgcc_s.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000001d (RUNPATH)            Library runpath: [/home/dklein/projects/FairRoot4/build_debian12/lib:/fairsoft/jan24_patches/lib]
 0x000000000000000c (INIT)               0x4000
 0x000000000000000d (FINI)               0x1b0f0
 0x0000000000000019 (INIT_ARRAY)         0x216f8
 0x000000000000001b (INIT_ARRAYSZ)       24 (bytes)
 0x000000000000001a (FINI_ARRAY)         0x21710
 0x000000000000001c (FINI_ARRAYSZ)       8 (bytes)
 0x000000006ffffef5 (GNU_HASH)           0x3a0
 0x0000000000000005 (STRTAB)             0xdd8
 0x0000000000000006 (SYMTAB)             0x3e8
 0x000000000000000a (STRSZ)              3989 (bytes)
 0x000000000000000b (SYMENT)             24 (bytes)
 0x0000000000000015 (DEBUG)              0x0
 0x0000000000000003 (PLTGOT)             0x21fe8
 0x0000000000000002 (PLTRELSZ)           1848 (bytes)
 0x0000000000000014 (PLTREL)             RELA
 0x0000000000000017 (JMPREL)             0x29e0
 0x0000000000000007 (RELA)               0x1f18
 0x0000000000000008 (RELASZ)             2760 (bytes)
 0x0000000000000009 (RELAENT)            24 (bytes)
 0x000000006ffffffb (FLAGS_1)            Flags: PIE
 0x000000006ffffffe (VERNEED)            0x1e48
 0x000000006fffffff (VERNEEDNUM)         3
 0x000000006ffffff0 (VERSYM)             0x1d6e
 0x000000006ffffff9 (RELACOUNT)          72
 0x0000000000000000 (NULL)               0x0
fuhlig1 commented 4 months ago

The problem comes through the inclusion of the target FairFastSim which depends on Geant4. If this target and the related source files are excluded the compilation works without problems.

When checking the library on Debian12 also here the Geant4 related libraries are not properly resolved.

ldd build/lib/libFairFastSim.so
    linux-vdso.so.1 (0x00007ffeeefb3000)
    libBase.so.19.0.0 => /tmp/uhlig/fairoot/build/lib/libBase.so.19.0.0 (0x00007f1528a82000)
    libgeant4vmc.so => /opt/fairsoft/nov22p1/lib/libgeant4vmc.so (0x00007f152893b000)
    libGeoBase.so.19.0.0 => /tmp/uhlig/fairoot/build/lib/libGeoBase.so.19.0.0 (0x00007f15288b3000)
    libFairLogger.so.1.11 => /opt/fairsoft/nov22p1/lib/libFairLogger.so.1.11 (0x00007f152887d000)
    libVMCLibrary.so => /opt/fairsoft/nov22p1/lib/libVMCLibrary.so (0x00007f1528840000)
    libEG.so.6.26 => /opt/fairsoft/nov22p1/lib/libEG.so.6.26 (0x00007f15287a3000)
    libGeom.so.6.26 => /opt/fairsoft/nov22p1/lib/libGeom.so.6.26 (0x00007f1528562000)
    libPhysics.so.6.26 => /opt/fairsoft/nov22p1/lib/libPhysics.so.6.26 (0x00007f1528515000)
    libG4processes.so => /opt/fairsoft/nov22p1/lib/libG4processes.so (0x00007f1526a75000)
    libG4track.so => /opt/fairsoft/nov22p1/lib/libG4track.so (0x00007f1526a55000)
    libG4particles.so => /opt/fairsoft/nov22p1/lib/libG4particles.so (0x00007f1526926000)
    libG4global.so => /opt/fairsoft/nov22p1/lib/libG4global.so (0x00007f15268aa000)
    libCore.so.6.26 => /opt/fairsoft/nov22p1/lib/libCore.so.6.26 (0x00007f1526348000)
    libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f1526125000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f1526046000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f1526026000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1525e45000)
    libAlignment.so.19.0.0 => /tmp/uhlig/fairoot/build/lib/libAlignment.so.19.0.0 (0x00007f1525e37000)
    libParBase.so.19.0.0 => /tmp/uhlig/fairoot/build/lib/libParBase.so.19.0.0 (0x00007f1525ddc000)
    libGeomPainter.so.6.26 => /opt/fairsoft/nov22p1/lib/libGeomPainter.so.6.26 (0x00007f1525d9f000)
    libGdml.so.6.26 => /opt/fairsoft/nov22p1/lib/libGdml.so.6.26 (0x00007f1525d3e000)
    libFairTools.so.19.0.0 => /tmp/uhlig/fairoot/build/lib/libFairTools.so.19.0.0 (0x00007f1525d1b000)
    libTree.so.6.26 => /opt/fairsoft/nov22p1/lib/libTree.so.6.26 (0x00007f1525b8e000)
    libHist.so.6.26 => /opt/fairsoft/nov22p1/lib/libHist.so.6.26 (0x00007f1525771000)
    libMatrix.so.6.26 => /opt/fairsoft/nov22p1/lib/libMatrix.so.6.26 (0x00007f152560c000)
    libMathCore.so.6.26 => /opt/fairsoft/nov22p1/lib/libMathCore.so.6.26 (0x00007f15253e2000)
    libRIO.so.6.26 => /opt/fairsoft/nov22p1/lib/libRIO.so.6.26 (0x00007f152501d000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f1528bff000)
    libg4root.so => not found
    libXmlVGM.so => not found
    libGeant4GM.so => not found
    libRootGM.so => not found
    libG4Tree.so => not found
    libG4FR.so => not found
    libG4GMocren.so => not found
    libG4visHepRep.so => not found
    libG4RayTracer.so => not found
    libG4VRML.so => not found
    libG4vis_management.so => not found
    libG4modeling.so => not found
    libG4interfaces.so => not found
    libG3toG4.so => not found
    libG4physicslists.so => not found
    libG4parmodels.so => not found
    libRint.so.6.26 => not found
    libG4run.so => not found
    libG4event.so => not found
    libG4tracking.so => not found
    libG4analysis.so => not found
    libG4digits_hits.so => not found
    libG4geometry.so => not found
    libG4materials.so => not found
    libG4graphics_reps.so => not found
    libG4intercoms.so => not found
    libCLHEP-2.4.5.1.so => not found
    libBaseVGM.so => not found
    libGraf3d.so.6.26 => /opt/fairsoft/nov22p1/lib/libGraf3d.so.6.26 (0x00007f1524f63000)
    libGpad.so.6.26 => /opt/fairsoft/nov22p1/lib/libGpad.so.6.26 (0x00007f1524e87000)
    libGraf.so.6.26 => /opt/fairsoft/nov22p1/lib/libGraf.so.6.26 (0x00007f1524d2d000)
    libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f1524d02000)
    libG4analysis.so => not found
    libG4digits_hits.so => not found
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f1524ce3000)
    libG4geometry.so => not found
    libG4materials.so => not found
    libG4intercoms.so => not found
    libCLHEP-2.4.5.1.so => not found
    libG4geometry.so => not found
    libG4materials.so => not found
    libCLHEP-2.4.5.1.so => not found
    libG4intercoms.so => not found
    libCLHEP-2.4.5.1.so => not found
    libCLHEP-2.4.5.1.so => not found
    libXMLIO.so.6.26 => /opt/fairsoft/nov22p1/lib/libXMLIO.so.6.26 (0x00007f1524c81000)
    libImt.so.6.26 => /opt/fairsoft/nov22p1/lib/libImt.so.6.26 (0x00007f1524c70000)
    libNet.so.6.26 => /opt/fairsoft/nov22p1/lib/libNet.so.6.26 (0x00007f1524b98000)
    libThread.so.6.26 => /opt/fairsoft/nov22p1/lib/libThread.so.6.26 (0x00007f1524b36000)
    libfreetype.so.6 => /lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f1524a69000)
    libMultiProc.so.6.26 => /opt/fairsoft/nov22p1/lib/libMultiProc.so.6.26 (0x00007f1524a5c000)
    libtbb.so.2 => /opt/fairsoft/nov22p1/lib/libtbb.so.2 (0x00007f1524a1b000)
    libssl.so.3 => /lib/x86_64-linux-gnu/libssl.so.3 (0x00007f1524972000)
    libcrypto.so.3 => /lib/x86_64-linux-gnu/libcrypto.so.3 (0x00007f15244f1000)
    libpng16.so.16 => /lib/x86_64-linux-gnu/libpng16.so.16 (0x00007f15244b9000)
    libbrotlidec.so.1 => /lib/x86_64-linux-gnu/libbrotlidec.so.1 (0x00007f15244ac000)
    libbrotlicommon.so.1 => /lib/x86_64-linux-gnu/libbrotlicommon.so.1 (0x00007f1524489000)
fuhlig1 commented 4 months ago

When checking the Geant4 libraries ion Debian12 t looks like there is already a problem since the libraries are not properly found

/opt/fairsoft/nov22p1/lib/libG4RayTracer.so:
    linux-vdso.so.1 (0x00007ffcffb72000)
    libG4vis_management.so => not found
    libG4modeling.so => not found
    libG4tasking.so => not found
    libG4run.so => not found
    libG4event.so => not found
    libG4tracking.so => not found
    libG4processes.so => not found
    libG4digits_hits.so => not found
    libG4geometry.so => not found
    libG4graphics_reps.so => not found
    libG4particles.so => not found
    libG4intercoms.so => not found
    libG4global.so => not found
    libCLHEP-2.4.5.1.so => not found
    libG4ptl.so.0 => not found
    libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f38d5621000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f38d5542000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f38d5522000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f38d5341000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f38d5877000)
fuhlig1 commented 4 months ago

The difference is introduced in my opinion by the linker. If you check the information on Debian12 only the direct library dependencies are included in the library.

readelf -d build_debian12_newcmake/lib/libFairFastSim.so

Dynamic section at offset 0xfc00 contains 42 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libBase.so.19.0.0]
 0x0000000000000001 (NEEDED)             Shared library: [libgeant4vmc.so]
 0x0000000000000001 (NEEDED)             Shared library: [libGeoBase.so.19.0.0]
 0x0000000000000001 (NEEDED)             Shared library: [libFairLogger.so.1.11]
 0x0000000000000001 (NEEDED)             Shared library: [libVMCLibrary.so]
 0x0000000000000001 (NEEDED)             Shared library: [libEG.so.6.26]
 0x0000000000000001 (NEEDED)             Shared library: [libGeom.so.6.26]
 0x0000000000000001 (NEEDED)             Shared library: [libPhysics.so.6.26]
 0x0000000000000001 (NEEDED)             Shared library: [libG4processes.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4track.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4particles.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4global.so]
 0x0000000000000001 (NEEDED)             Shared library: [libCore.so.6.26]
 0x0000000000000001 (NEEDED)             Shared library: [libstdc++.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgcc_s.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000000e (SONAME)             Library soname: [libFairFastSim.so.19.0.0]
 0x000000000000001d (RUNPATH)            Library runpath: [/tmp/uhlig/fairoot/build_debian12_newcmake/lib:/opt/fairsoft/nov22p1/lib:]
 0x000000000000000c (INIT)               0x7000
 0x000000000000000d (FINI)               0xaa30
 0x0000000000000019 (INIT_ARRAY)         0xf6a0
 0x000000000000001b (INIT_ARRAYSZ)       48 (bytes)
 0x000000000000001a (FINI_ARRAY)         0xf6d0
 0x000000000000001c (FINI_ARRAYSZ)       8 (bytes)
 0x000000006ffffef5 (GNU_HASH)           0x260
 0x0000000000000005 (STRTAB)             0x20d0
 0x0000000000000006 (SYMTAB)             0x630
 0x000000000000000a (STRSZ)              10826 (bytes)
 0x000000000000000b (SYMENT)             24 (bytes)
 0x0000000000000003 (PLTGOT)             0xffe8
 0x0000000000000002 (PLTRELSZ)           2136 (bytes)
 0x0000000000000014 (PLTREL)             RELA
 0x0000000000000017 (JMPREL)             0x63a0
 0x0000000000000007 (RELA)               0x4e28
 0x0000000000000008 (RELASZ)             5496 (bytes)
 0x0000000000000009 (RELAENT)            24 (bytes)
 0x000000006ffffffe (VERNEED)            0x4d58
 0x000000006fffffff (VERNEEDNUM)         4
 0x000000006ffffff0 (VERSYM)             0x4b1a
 0x000000006ffffff9 (RELACOUNT)          40
 0x0000000000000000 (NULL)               0x0

The problem appears since libgeant4vmc.so does not properly contains the RPATH and such can't find its dependencies when linking the test. In contrast the library on fedora39 contains the full list of dependencies of dependencies (direct and indirect)

readelf -d build/lib/libFairFastSim.so

Dynamic section at offset 0x10878 contains 98 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libBase.so.19.0.0]
 0x0000000000000001 (NEEDED)             Shared library: [libgeant4vmc.so]
 0x0000000000000001 (NEEDED)             Shared library: [libGeoBase.so.19.0.0]
 0x0000000000000001 (NEEDED)             Shared library: [libAlignment.so.19.0.0]
 0x0000000000000001 (NEEDED)             Shared library: [libParBase.so.19.0.0]
 0x0000000000000001 (NEEDED)             Shared library: [libFairTools.so.19.0.0]
 0x0000000000000001 (NEEDED)             Shared library: [libFairLogger.so.1.11]
 0x0000000000000001 (NEEDED)             Shared library: [libGeomPainter.so.6.30]
 0x0000000000000001 (NEEDED)             Shared library: [libg4root.so]
 0x0000000000000001 (NEEDED)             Shared library: [libVMCLibrary.so]
 0x0000000000000001 (NEEDED)             Shared library: [libEG.so.6.30]
 0x0000000000000001 (NEEDED)             Shared library: [libGraf3d.so.6.30]
 0x0000000000000001 (NEEDED)             Shared library: [libGpad.so.6.30]
 0x0000000000000001 (NEEDED)             Shared library: [libGraf.so.6.30]
 0x0000000000000001 (NEEDED)             Shared library: [libTree.so.6.30]
 0x0000000000000001 (NEEDED)             Shared library: [libXmlVGM.so]
 0x0000000000000001 (NEEDED)             Shared library: [libGeant4GM.so]
 0x0000000000000001 (NEEDED)             Shared library: [libClhepVGM.so]
 0x0000000000000001 (NEEDED)             Shared library: [libRootGM.so]
 0x0000000000000001 (NEEDED)             Shared library: [libGeom.so.6.30]
 0x0000000000000001 (NEEDED)             Shared library: [libHist.so.6.30]
 0x0000000000000001 (NEEDED)             Shared library: [libPhysics.so.6.30]
 0x0000000000000001 (NEEDED)             Shared library: [libMatrix.so.6.30]
 0x0000000000000001 (NEEDED)             Shared library: [libGenVector.so.6.30]
 0x0000000000000001 (NEEDED)             Shared library: [libMathCore.so.6.30]
 0x0000000000000001 (NEEDED)             Shared library: [libImt.so.6.30]
 0x0000000000000001 (NEEDED)             Shared library: [libMultiProc.so.6.30]
 0x0000000000000001 (NEEDED)             Shared library: [libNet.so.6.30]
 0x0000000000000001 (NEEDED)             Shared library: [libRIO.so.6.30]
 0x0000000000000001 (NEEDED)             Shared library: [libBaseVGM.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4Tree.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4FR.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4GMocren.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4visHepRep.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4RayTracer.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4VRML.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4ToolsSG.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4vis_management.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4modeling.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4interfaces.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4mctruth.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4geomtext.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4gdml.so]
 0x0000000000000001 (NEEDED)             Shared library: [libxerces-c-3.2.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG3toG4.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4error_propagation.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4readout.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4physicslists.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4run.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4event.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4tracking.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4parmodels.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4processes.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4analysis.so]
 0x0000000000000001 (NEEDED)             Shared library: [libexpat.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libz.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libG4digits_hits.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4track.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4geometry.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4materials.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4particles.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4graphics_reps.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4intercoms.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4global.so]
 0x0000000000000001 (NEEDED)             Shared library: [libCLHEP-2.4.7.1.so]
 0x0000000000000001 (NEEDED)             Shared library: [libG4ptl.so.2]
 0x0000000000000001 (NEEDED)             Shared library: [libRint.so.6.30]
 0x0000000000000001 (NEEDED)             Shared library: [libThread.so.6.30]
 0x0000000000000001 (NEEDED)             Shared library: [libCore.so.6.30]
 0x0000000000000001 (NEEDED)             Shared library: [libstdc++.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgcc_s.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000000e (SONAME)             Library soname: [libFairFastSim.so.19.0.0]
 0x000000000000001d (RUNPATH)            Library runpath: [/tmp/uhlig/fairoot/build/lib:/opt/fairsoft/jan24p1/lib:]
 0x000000000000000c (INIT)               0x8000
 0x000000000000000d (FINI)               0xbd30
 0x0000000000000019 (INIT_ARRAY)         0x10308
 0x000000000000001b (INIT_ARRAYSZ)       40 (bytes)
 0x000000000000001a (FINI_ARRAY)         0x10330
 0x000000000000001c (FINI_ARRAYSZ)       8 (bytes)
 0x000000006ffffef5 (GNU_HASH)           0x300
 0x0000000000000005 (STRTAB)             0x2180
 0x0000000000000006 (SYMTAB)             0x6e0
 0x000000000000000a (STRSZ)              11946 (bytes)
 0x000000000000000b (SYMENT)             24 (bytes)
 0x0000000000000003 (PLTGOT)             0x10fe8
 0x0000000000000002 (PLTRELSZ)           2088 (bytes)
 0x0000000000000014 (PLTREL)             RELA
 0x0000000000000017 (JMPREL)             0x68d0
 0x0000000000000007 (RELA)               0x5328
 0x0000000000000008 (RELASZ)             5544 (bytes)
 0x0000000000000009 (RELAENT)            24 (bytes)
 0x000000006ffffffe (VERNEED)            0x5268
 0x000000006fffffff (VERNEEDNUM)         3
 0x000000006ffffff0 (VERSYM)             0x502a
 0x000000006ffffff9 (RELACOUNT)          39
 0x0000000000000000 (NULL)               0x0

So for fedora39 the linker finds all the libraries when linking the test executable. I will check if there is a possibility to have the same feature also for Debian12 and other OSs.

dennisklein commented 4 months ago

Interesting observation. I agree, would be good to understand how to steer this behaviour.

fuhlig1 commented 4 months ago

With the help of Matthias it was now possible to extract the linker parameters used when the linker is executed by gcc. Since Debian11 the parameter --as-neededwas added as linker default parameter which only adds a library as dependency if this library is actually needed.

--as-needed
--no-as-needed
     This option affects ELF DT_NEEDED tags for dynamic libraries mentioned on the command line after the --as-needed option.  Normally the linker will add a
     DT_NEEDED tag for each dynamic library mentioned on the command line, regardless of whether the library is actually needed or not.  --as-needed causes a
     DT_NEEDED tag to only be emitted for a library that at that point in the link satisfies a non-weak undefined symbol reference from a regular object file or,
     if the library is not found in the DT_NEEDED lists of other needed libraries, a non-weak undefined symbol reference from another needed dynamic library.
     Object files or libraries appearing on the command line after the library in question do not affect whether the library is seen as needed.  This is similar to
     the rules for extraction of object files from archives.  --no-as-needed restores the default behaviour.

The old behaviour was that any library passed to the linker was added as dependency.

This change explains the observed differences of different OSs.