Fedora 35编译Russel Rust库时依赖缺失链接报错咨询
Fedora 35 下 russell Rust库依赖安装方案
Debian系与Fedora系的数学库开发包命名规则存在差异,直接搜索Debian环境下的liblapacke-dev、libopenblas-dev包名无法匹配到Fedora源中的对应安装包,编译阶段抛出的cannot find -lopenblas、cannot find -llapacke错误,本质是链接器找不到两个依赖库的开发链接文件。
方案1:安装Fedora官方源对应开发包
Fedora官方源中,两个依赖对应的包名如下,直接通过dnf安装即可:
- openblas开发文件对应包名:
openblas-devel - lapacke(含LAPACK标准接口实现)开发文件对应包名:
lapack-devel
执行安装命令:
sudo dnf install openblas-devel lapack-devel gcc
安装完成后回到Rust项目目录重新执行cargo build,绝大多数场景下可以正常完成编译。
如果安装后依然提示链接错误,是因为部分版本的openblas会把库存放在/usr/lib64/openblas子目录下,没有被链接器默认检索到,编译前手动追加库搜索路径即可:
export LIBRARY_PATH=/usr/lib64:/usr/lib64/openblas:$LIBRARY_PATH cargo build
方案2:使用russell自带的bundled特性(无需手动安装系统依赖)
如果不想手动适配系统库路径,可以在项目的Cargo.toml中引入russell时开启bundled特性,让构建脚本自动拉取、编译依赖的数学库,完全跳过系统库查找步骤:
[dependencies] russell = { version = "*", features = ["bundled"] }
配置完成后直接执行cargo build即可,构建过程会自动完成所有依赖编译,不需要额外手动安装系统包。
内容的提问来源于stack exchange,提问作者Mattia Samiolo
相关产品推荐
相关产品推荐

