#1618 Linking to UMFPACK fails because UMFPACK sublibraries are missing
Metadata
Property | Value |
---|---|
Reported by | Katja Hanowski (hanowski@igpm.rwth-aachen.de) |
Reported at | Apr 16, 2015 13:32 |
Type | Bug Report |
Version | Git (pre2.4) [cmake] |
Operating System | Linux 64bit |
Last edited by | Christoph Grüninger (gruenich@iws.uni-stuttgart.de) |
Last edited at | Apr 17, 2015 11:21 |
Closed by | Christoph Grüninger (gruenich@iws.uni-stuttgart.de) |
Closed at | Apr 17, 2015 11:21 |
Closed in version | Unknown |
Resolution | Duplicate |
Comment | of #1403 (closed). Fixed by updating openSuse to 13.2 |
Description
I want to rebuild my own project with CMake. Everything works well so far, except for linking against UMFPACK libraries.
CMake version: 2.8.11.2 Clang version: 3.3
Running ./dune-common/bin/dunecontrol --opts=dune.opts --only=dune-pufem all
with opts CONFIGURE_FLAGS="CC='clang' CXX='clang++' CXXFLAGS='-g -Wno-tautological-compare -Wno-deprecated-declarations' --prefix=$HOME/local --with-ug=$HOME/local --with-psurface=$HOME/local"
throws (UMFPACK being listed in found optional packages)
...
--- calling make for dune-pufem ---
build directory: build-cmake
cmake --build . --
[ 50%] Built target dune_pufem
Linking CXX executable mirroredProblemTest
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libumfpack.so: undefined reference to cholmod_l_free_factor' /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libumfpack.so: undefined reference to
cholmod_l_transpose'
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libumfpack.so: undefined reference to cholmod_analyze' /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libumfpack.so: undefined reference to
cholmod_l_start'
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libumfpack.so: undefined reference to cholmod_l_analyze' /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libumfpack.so: undefined reference to
cholmod_l_free_sparse'
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libumfpack.so: undefined reference to cholmod_finish' /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libumfpack.so: undefined reference to
cholmod_l_print_common'
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libumfpack.so: undefined reference to cholmod_free_sparse' /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libumfpack.so: undefined reference to
cholmod_start'
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libumfpack.so: undefined reference to SuiteSparse_time' /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libumfpack.so: undefined reference to
cholmod_free_factor'
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libumfpack.so: undefined reference to cholmod_transpose' /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libumfpack.so: undefined reference to
cholmod_l_finish'
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libumfpack.so: undefined reference to `cholmod_print_common'
clang-3.3: error: linker command failed with exit code 1 (use -v to see invocation)
gmake[2]: *** [src/tests/mirroredProblemTest] Error 1
gmake[1]: *** [src/tests/CMakeFiles/mirroredProblemTest.dir/all] Error 2
gmake: *** [all] Error 2
--- Failed to build dune-pufem ---
Terminating dunecontrol due to previous errors!
The error seems to occur since some libraries are not linked. More precisely, running
/usr/bin/clang++ -g -Wno-tautological-compare -Wno-deprecated-declarations -std=c++11 -lpthread CMakeFiles/mirroredProblemTest.dir/mirroredProblemTest.cc.o -o mirroredProblemTest -rdynamic /home/data/hanowski/Dune/dune-grid/build-cmake/lib/libdunegrid.a /home/data/hanowski/local/lib64/libugS2.a /home/data/hanowski/local/lib64/libugS3.a /home/data/hanowski/local/lib64/libdevS.a /home/data/hanowski/Dune/dune-mc/build-cmake/lib/libdunemc.a /home/data/hanowski/Dune/dune-grid/build-cmake/lib/libdunegrid.a /home/data/hanowski/Dune/dune-typetree/build-cmake/lib/libdunetypetree.a /home/data/hanowski/Dune/dune-geometry/build-cmake/lib/libdunegeometry.a /home/data/hanowski/Dune/dune-common/build-cmake/lib/libdunecommon.a /home/data/hanowski/Dune/dune-grid/build-cmake/lib/libdunegrid.a /home/data/hanowski/local/lib64/libugS2.a /home/data/hanowski/local/lib64/libugS3.a /home/data/hanowski/local/lib64/libdevS.a /home/data/hanowski/Dune/dune-mc/build-cmake/lib/libdunemc.a /home/data/hanowski/Dune/dune-grid/build-cmake/lib/libdunegrid.a /home/data/hanowski/Dune/dune-typetree/build-cmake/lib/libdunetypetree.a /home/data/hanowski/Dune/dune-geometry/build-cmake/lib/libdunegeometry.a /home/data/hanowski/Dune/dune-common/build-cmake/lib/libdunecommon.a -lumfpack -lblas /home/data/hanowski/local/lib/libamd.a -llapack
fails. Adding manually "-lcholmod -lcolamd -lsuitesparseconfig" solves the problem.