WSL Ubuntu中LAPACK库存在但gfortran编译提示找不到的问题
问题原因
- 你当前使用的是Windows终端(PowerShell/CMD),调用的
gfortran.exe是Windows版本的编译器,而非WSL Ubuntu内的Linux版gfortran。 - Windows系统无法直接识别WSL的Linux文件路径(如
/usr/local/lib),该路径对Windows环境完全不存在,因此编译器提示找不到库文件。 - 此前编译普通Fortran文件正常,是因为源文件存储在Windows文件系统中,Windows版gfortran可直接访问;但WSL内的
liblapack.a是Linux格式的静态库,即便路径能识别,Windows编译器也无法兼容使用。
解决方法
方法一:使用WSL终端编译(推荐)
- 在VS Code的终端面板中,切换到WSL Ubuntu终端(可通过终端顶部的下拉菜单选择,或右下角状态栏切换WSL环境后新建终端)。
- 切换到Fortran文件所在的Windows目录对应的WSL路径:Windows下的
C:\Users\minhh\Fortran\wk在WSL中对应/mnt/c/Users/minhh/Fortran/wk,执行命令:cd /mnt/c/Users/minhh/Fortran/wk - 用WSL内的gfortran编译,可直接使用Linux路径调用库文件:
更规范的写法是用gfortran testlapack.f90 /usr/local/lib/liblapack.a -o test-L指定库目录、-l指定库名(编译器会自动匹配liblapack.a):gfortran testlapack.f90 -L/usr/local/lib -llapack -o test
方法二:在Windows环境安装兼容的LAPACK库(按需选择)
- 若需继续使用Windows版gfortran,需安装Windows平台兼容的LAPACK库(比如通过MinGW-w64的包管理器下载,或获取预编译的Windows静态库)。
- 编译时指定Windows系统下的库文件路径,例如库文件位于
C:\mingw64\lib\liblapack.a,则执行:gfortran testlapack.f90 C:\mingw64\lib\liblapack.a -o test
内容的提问来源于stack exchange,提问作者taolao
相关产品推荐
相关产品推荐

