安装MTL4库时出现umfpack.h未找到错误求助
问题描述
尝试安装MTL4库(仓库地址:https://gitlab.mn.tu-dresden.de/spraetor/mtl4.git),执行以下命令:
$ cd mtl4 $ mkdir build $ cmake -DCMAKE_INSTALL_PREFIX=./build -B build_dir -S . $ cmake --build build_dir --target install
执行后触发编译错误:
[ 0%] Building CXX object libs/numeric/mtl/test/CMakeFiles/PA_test.dir/PA_test.cpp.o In file included from /home/user/Downloads/mtl4/build/mtl4/boost/numeric/mtl/operations.hpp:111, from /home/user/Downloads/mtl4/build/mtl4/boost/numeric/mtl/mtl.hpp:17, from /home/user/Downloads/mtl4/build/mtl4/libs/numeric/mtl/test/PA_test.cpp:14: /home/user/Downloads/mtl4/build/mtl4/boost/numeric/mtl/interface/umfpack_solve.hpp:36:12: fatal error: umfpack.h: No such file or directory 36 | # include <umfpack.h> | ^~~~~~~~~~~ compilation terminated. make[2]: *** [libs/numeric/mtl/test/CMakeFiles/PA_test.dir/build.make:76: libs/numeric/mtl/test/CMakeFiles/PA_test.dir/PA_test.cpp.o] Error 1 make[1]: *** [CMakeFiles/Makefile2:1719: libs/numeric/mtl/test/CMakeFiles/PA_test.dir/all] Error 2 make: *** [Makefile:146: all] Error 2
系统为Arch Linux,已安装suitesparse包(该包应提供umfpack.h头文件),需要解决此编译问题。
解决方案
1. 确认头文件位置
Arch Linux中suitesparse的头文件默认放在/usr/include/suitesparse/目录下,先验证文件存在:
ls /usr/include/suitesparse/umfpack.h
若输出文件路径,说明CMake未自动识别该目录。
2. 手动指定UMFPACK路径重新配置CMake
清理旧构建目录后,通过CMake参数指定UMFPACK的头文件和库路径:
rm -rf build_dir cmake -DCMAKE_INSTALL_PREFIX=./build -B build_dir -S . \ -DUMFPACK_INCLUDE_DIR=/usr/include/suitesparse \ -DUMFPACK_LIBRARIES="/usr/lib/libumfpack.so;/usr/lib/libsuitesparseconfig.so"
然后重新执行构建:
cmake --build build_dir --target install
3. 禁用UMFPACK支持(无需该功能时)
如果不需要MTL4的UMFPACK相关功能,可直接关闭该依赖:
rm -rf build_dir cmake -DCMAKE_INSTALL_PREFIX=./build -B build_dir -S . -DMTL_WITH_UMFPACK=OFF cmake --build build_dir --target install
4. 利用suitesparse的CMake配置文件
Arch Linux的suitesparse包提供了CMake配置文件,可通过设置CMAKE_PREFIX_PATH让CMake自动检测:
rm -rf build_dir cmake -DCMAKE_INSTALL_PREFIX=./build -B build_dir -S . -DCMAKE_PREFIX_PATH=/usr/lib/cmake/suitesparse cmake --build build_dir --target install
内容的提问来源于stack exchange,提问作者testovich
相关产品推荐
相关产品推荐

