You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已安装LAPACK仍出现`dgesvx_`未定义引用错误的技术求助

解决WSL Ubuntu下Fortran编译dgesvx未定义引用的问题

最可能的原因:链接顺序错误

GCC链接器按从左到右的顺序处理文件和库,先处理的库不会为后续目标文件提供符号。你的原命令将库放在目标文件前,导致链接器先加载BLAS/LAPACK库,后续处理目标文件时需要的dgesvx_符号无法从已处理的库中匹配。

修正编译命令

将目标文件移至库的前方,调整后的命令:

gfortran -o cft numtype.o cfapprox.o cftest.o -llapack -lblas

若仍报错,检查库符号与安装情况

  1. 验证LAPACK库是否包含目标符号
    执行以下命令查看LAPACK库导出的符号(路径可根据系统调整,如/usr/lib/liblapack.so):
nm -D /usr/lib/x86_64-linux-gnu/liblapack.so | grep dgesvx
  • 若输出包含dgesvx_:库本身无问题,重新确认链接顺序。
  • 若输出仅为dgesvx(无下划线):编译Fortran代码时添加-fno-underscoring选项,取消符号名的下划线修饰,重新编译目标文件后再链接。
  1. 重新安装BLAS/LAPACK开发库
    确保库文件完整无损坏:
sudo apt-get install --reinstall libblas-dev liblapack-dev
  1. 尝试用OpenBLAS替代默认库
    OpenBLAS集成了BLAS和LAPACK实现,兼容性更优:
sudo apt-get install libopenblas-dev

之后用以下命令编译:

gfortran -o cft numtype.o cfapprox.o cftest.o -lopenblas

内容的提问来源于stack exchange,提问作者Mr. Cohen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 01:28:14