安装armadillo-8.500.0执行make时遇libsuperlu.so相关编译错误求助
解决Armadillo编译时找不到libsuperlu.so的问题
我之前在编译旧版本Armadillo的时候也碰到过一模一样的问题——CMake明明显示找到了SuperLU,但执行make时就报错找不到libsuperlu.so。大概率是符号链接缺失、CMake缓存错误或者系统库路径的问题,试试下面这些步骤:
先确认SuperLU的库文件状态
运行这个命令查看/usr/local/lib下的SuperLU文件:ls -la /usr/local/lib | grep superlu你可能会发现只有带版本号的文件(比如
libsuperlu.so.5.2.1),而没有通用的libsuperlu.so软链接。这时候手动创建软链接即可:sudo ln -s /usr/local/lib/libsuperlu.so.5.2.1 /usr/local/lib/libsuperlu.so注意把命令里的版本号替换成你实际看到的文件名。
清空CMake缓存重新配置
CMake有时候会缓存错误的库路径信息,导致make时出错。进入你的Armadillo build目录,执行:rm -rf CMakeCache.txt CMakeFiles/然后重新运行cmake,最好明确指定SuperLU的路径(避免自动检测出错):
cmake -DSuperLU_INCLUDE_DIR=/usr/local/include -DSuperLU_LIBRARY=/usr/local/lib/libsuperlu.so.5.2.1 ..同样替换成你实际的库文件路径。
确保系统能找到/usr/local/lib下的库
有些Linux发行版默认不会把/usr/local/lib加入到系统的库搜索路径里,临时设置环境变量试试:export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH设置完成后再重新执行
make。重新安装SuperLU
如果上面的方法都不行,可能是SuperLU本身安装不完整。下载对应版本的SuperLU(Armadillo 8.5需要SuperLU 5.x版本),解压后重新编译安装:cd superlu-5.2.1 cmake . make sudo make install安装过程中留意有没有报错,确保生成了完整的共享库文件。
内容的提问来源于stack exchange,提问作者hoboh
相关产品推荐
相关产品推荐

