dealii / candi

candi - (Compile & Install) - Downloads, configures, builds and installs deal.II
GNU Lesser General Public License v3.0
61 stars 61 forks source link

SLEPc link failure #358

Closed tjhei closed 1 year ago

tjhei commented 1 year ago

Linking with latest SLEPc 3.19 on Ubuntu 22.04 with GCC 11.3 leads to the following linker errors:

/usr/bin/mpicxx -rdynamic -fuse-ld=bfd -ggdb -Wl,--compress-debug-sections=zlib CMakeFiles/example_step_1_debug.dir/step-1/step-1.cc.o -o ../bin/step-1.debug  -Wl,-rpath,/root/dealii-candi/tmp/build/deal.II-master/lib:/root/dealii-candi/slepc-3.19.0/lib:/root/dealii-candi/petsc-3.19.0/lib: ../lib/libdeal_II.g.so.9.6.0-pre -ldl /usr/lib/x86_64-linux-gnu/libboost_iostreams.so /usr/lib/x86_64-linux-gnu/libboost_serialization.so /usr/lib/x86_64-linux-gnu/libboost_system.so /usr/lib/x86_64-linux-gnu/libboost_thread.so /usr/lib/x86_64-linux-gnu/libboost_regex.so /usr/lib/x86_64-linux-gnu/libboost_chrono.so /usr/lib/x86_64-linux-gnu/libboost_date_time.so /usr/lib/x86_64-linux-gnu/libboost_atomic.so /usr/lib/x86_64-linux-gnu/libumfpack.so /usr/lib/x86_64-linux-gnu/libcholmod.so /usr/lib/x86_64-linux-gnu/libccolamd.so /usr/lib/x86_64-linux-gnu/libcolamd.so /usr/lib/x86_64-linux-gnu/libcamd.so /usr/lib/x86_64-linux-gnu/libsuitesparseconfig.so /usr/lib/x86_64-linux-gnu/libamd.so -lrt /root/dealii-candi/slepc-3.19.0/lib/libslepc.so /root/dealii-candi/petsc-3.19.0/lib/libpetsc.so /root/dealii-candi/petsc-3.19.0/lib/libHYPRE.so /root/dealii-candi/petsc-3.19.0/lib/libdmumps.a /root/dealii-candi/petsc-3.19.0/lib/libmumps_common.a /root/dealii-candi/petsc-3.19.0/lib/libpord.a /root/dealii-candi/petsc-3.19.0/lib/libscalapack.so /usr/lib/x86_64-linux-gnu/liblapack.so /usr/lib/x86_64-linux-gnu/libblas.so /usr/lib/x86_64-linux-gnu/libmpi_usempif08.so /usr/lib/x86_64-linux-gnu/libmpi_usempi_ignore_tkr.so /usr/lib/x86_64-linux-gnu/libmpi_mpifh.so /usr/lib/x86_64-linux-gnu/libmpi.so /usr/lib/x86_64-linux-gnu/libopen-rte.so /usr/lib/x86_64-linux-gnu/libopen-pal.so /usr/lib/x86_64-linux-gnu/libhwloc.so /usr/lib/x86_64-linux-gnu/libevent_core.so /usr/lib/x86_64-linux-gnu/libevent_pthreads.so /usr/lib/x86_64-linux-gnu/libz.so -lm -lgfortran -lquadmath
/usr/bin/ld.bfd: ../lib/libdeal_II.g.so.9.6.0-pre: undefined reference to `EPSSetWhichEigenpairs'
/usr/bin/ld.bfd: ../lib/libdeal_II.g.so.9.6.0-pre: undefined reference to `STSetType'
/usr/bin/ld.bfd: ../lib/libdeal_II.g.so.9.6.0-pre: undefined reference to `EPSGetConverged'
/usr/bin/ld.bfd: ../lib/libdeal_II.g.so.9.6.0-pre: undefined reference to `EPSSetST'
/usr/bin/ld.bfd: ../lib/libdeal_II.g.so.9.6.0-pre: undefined reference to `EPSGetIterationNumber'
/usr/bin/ld.bfd: ../lib/libdeal_II.g.so.9.6.0-pre: undefined reference to `EPSComputeError'
/usr/bin/ld.bfd: ../lib/libdeal_II.g.so.9.6.0-pre: undefined reference to `STDestroy'
/usr/bin/ld.bfd: ../lib/libdeal_II.g.so.9.6.0-pre: undefined reference to `EPSSetFromOptions'
/usr/bin/ld.bfd: ../lib/libdeal_II.g.so.9.6.0-pre: undefined reference to `EPSGDSetDoubleExpansion'
/usr/bin/ld.bfd: ../lib/libdeal_II.g.so.9.6.0-pre: undefined reference to `STSetKSP'
/usr/bin/ld.bfd: ../lib/libdeal_II.g.so.9.6.0-pre: undefined reference to `STSetMatMode'
/usr/bin/ld.bfd: ../lib/libdeal_II.g.so.9.6.0-pre: undefined reference to `STSetShift'
/usr/bin/ld.bfd: ../lib/libdeal_II.g.so.9.6.0-pre: undefined reference to `EPSDestroy'
/usr/bin/ld.bfd: ../lib/libdeal_II.g.so.9.6.0-pre: undefined reference to `EPSSolve'
/usr/bin/ld.bfd: ../lib/libdeal_II.g.so.9.6.0-pre: undefined reference to `EPSCreate'
/usr/bin/ld.bfd: ../lib/libdeal_II.g.so.9.6.0-pre: undefined reference to `EPSSetDimensions'
/usr/bin/ld.bfd: ../lib/libdeal_II.g.so.9.6.0-pre: undefined reference to `SlepcFinalize'
/usr/bin/ld.bfd: ../lib/libdeal_II.g.so.9.6.0-pre: undefined reference to `EPSArnoldiSetDelayed'
/usr/bin/ld.bfd: ../lib/libdeal_II.g.so.9.6.0-pre: undefined reference to `EPSGetEigenpair'
/usr/bin/ld.bfd: ../lib/libdeal_II.g.so.9.6.0-pre: undefined reference to `STCreate'
/usr/bin/ld.bfd: ../lib/libdeal_II.g.so.9.6.0-pre: undefined reference to `EPSSetTarget'
/usr/bin/ld.bfd: ../lib/libdeal_II.g.so.9.6.0-pre: undefined reference to `EPSSetConvergenceTest'
/usr/bin/ld.bfd: ../lib/libdeal_II.g.so.9.6.0-pre: undefined reference to `EPSSetOperators'
/usr/bin/ld.bfd: ../lib/libdeal_II.g.so.9.6.0-pre: undefined reference to `EPSSetTolerances'
/usr/bin/ld.bfd: ../lib/libdeal_II.g.so.9.6.0-pre: undefined reference to `STCayleySetAntishift'
/usr/bin/ld.bfd: ../lib/libdeal_II.g.so.9.6.0-pre: undefined reference to `SlepcInitialize'
/usr/bin/ld.bfd: ../lib/libdeal_II.g.so.9.6.0-pre: undefined reference to `EPSLanczosSetReorthog'
/usr/bin/ld.bfd: ../lib/libdeal_II.g.so.9.6.0-pre: undefined reference to `EPSSetProblemType'
/usr/bin/ld.bfd: ../lib/libdeal_II.g.so.9.6.0-pre: undefined reference to `SlepcInitializeCalled'
/usr/bin/ld.bfd: ../lib/libdeal_II.g.so.9.6.0-pre: undefined reference to `EPSSetType'
collect2: error: ld returned 1 exit status

This is with BFD or gold linker.

tjhei commented 1 year ago

It seems SLEPc is doing a static lib even though it shouldn't:

ldd ../../../slepc-3.19.0/lib/libslepc.so.3.19.0 
        statically linked
tjhei commented 1 year ago

Fixed by #359.