indilib / indi-3rdparty

INDI 3rd Party drivers repository
https://www.indilib.org/devices.html
GNU Lesser General Public License v2.1
123 stars 208 forks source link

Building of indi_qhy_ccd fails on aarch64 (hidden symbol `__aarch64_ldadd4_acq_rel') #897

Open nrackwit opened 6 months ago

nrackwit commented 6 months ago

Describe the bug I'm somehow unable to get the QHY driver to build from source on my Raspberry Pi 4 (Bullseye 64bit) with newer SDKs. It fails during the linker step and I'm out of guesses, any help is appreciated.

[ 16%] Building CXX object CMakeFiles/indi_qhy_ccd.dir/qhy_ccd.cpp.o [ 33%] Linking CXX executable indi_qhy_ccd /usr/bin/ld: indi_qhy_ccd: hidden symbol `__aarch64_ldadd4_acq_rel' in /usr/lib/gcc/aarch64-linux-gnu/10/libgcc.a(ldadd_4_4.o) is referenced by DSO /usr/bin/ld: final link failed: bad value collect2: error: ld returned 1 exit status make[2]: [CMakeFiles/indi_qhy_ccd.dir/build.make:103: indi_qhy_ccd] Error 1 make[1]: [CMakeFiles/Makefile2:87: CMakeFiles/indi_qhy_ccd.dir/all] Error 2 make: *** [Makefile:136: all] Error 2

To Reproduce Exact steps to reproduce the behavior.

  1. Install qhyccd SDK from indiqhy (I.e. cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=Debug . && make && sudo make install)
  2. Build indi_qhy_ccd (I.e. cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=Debug . && make)
  3. See error

The problem seems related to the QHYSDK version. I iterated through a couple of them and the build seems to pass with any SDK version sdk_Arm64_23.05.09 or earlier and fails with any later version including the newest I tried which was sdk_Arm64_24.01.09. I'm somehow wondering if this has to do with how the SDK got built and whether something around that end may have changed after the 23/05/09 version. So is this maybe a question for the QHYCCD folks or am I missing just the right trick?

Expected behavior Well, the compile step should create an indi_qhy_ccd binary to install.

Desktop (please complete the following information):

Log Files My console output looks like this:

~/build/indi-3rdparty/indi-qhy $ cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=Debug . -- The CXX compiler identification is GNU 10.2.1 -- The C compiler identification is GNU 10.2.1 -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/cc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Found CFITSIO 3.49: /usr/lib/aarch64-linux-gnu/libcfitsio.so -- Found INDI: /usr/local/lib/aarch64-linux-gnu/libindidriver.so;/usr/local/lib/aarch64-linux-gnu/libindiAlignmentDriver.so (found version "2.0.6") -- Found QHY: /usr/local/lib/libqhyccd.so -- Found ZLIB: /usr/lib/aarch64-linux-gnu/libz.so (found version "1.2.11")
-- Found NOVA: /usr/lib/aarch64-linux-gnu/libnova.so -- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.2") -- Found USB1: /usr/lib/aarch64-linux-gnu/libusb-1.0.so (found version "1.0.24") -- Performing Test USB1_HAS_LIBUSB_ERROR_NAME -- Performing Test USB1_HAS_LIBUSB_ERROR_NAME - Success -- Performing Test CMAKE_HAVE_LIBC_PTHREAD -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed -- Looking for pthread_create in pthreads -- Looking for pthread_create in pthreads - not found -- Looking for pthread_create in pthread -- Looking for pthread_create in pthread - found -- Found Threads: TRUE
-- Performing Test COMPATIBLE_FORTIFY_SOURCE -- Performing Test COMPATIBLE_FORTIFY_SOURCE - Success -- Configuring done (2.6s) -- Generating done (0.0s) -- Build files have been written to: /home/pi/build_profile/indi-3rdparty/indi-qhy ~/build/indi-3rdparty/indi-qhy $ make [ 16%] Building CXX object CMakeFiles/indi_qhy_ccd.dir/qhy_ccd.cpp.o [ 33%] Linking CXX executable indi_qhy_ccd /usr/bin/ld: indi_qhy_ccd: hidden symbol `__aarch64_ldadd4_acq_rel' in /usr/lib/gcc/aarch64-linux-> gnu/10/libgcc.a(ldadd_4_4.o) is referenced by DSO /usr/bin/ld: final link failed: bad value collect2: error: ld returned 1 exit status make[2]: [CMakeFiles/indi_qhy_ccd.dir/build.make:103: indi_qhy_ccd] Error 1 make[1]: [CMakeFiles/Makefile2:87: CMakeFiles/indi_qhy_ccd.dir/all] Error 2 make: *** [Makefile:136: all] Error 2