将FFTW与gfortran链接时出现问题对于体系结构x86_64未找到符号

问题描述

我在macOS Catalina(10.15.5)上,并且已经使用brew install fftw安装了FFTW。我还安装了GCC(版本10.2.0),它与以下我正在使用的命令符号链接。

我能够像这样编译并运行一个简单的C ++程序:

g++-10 test.cpp -L/usr/local/lib -I/usr/local/include -lfftw3 -lm 

但是,我必须修改环境变量CPATH才能使它工作。

我无法获得一个简单的Fortran FFTW示例来工作(我正在使用this)。我用来编译的命令是:

gfortran-10 test.f90 -L/usr/local/lib -I/usr/local/include -lfftw3 -lm

我得到的错误如下:

Undefined symbols for architecture x86_64:
  "__gfortran_os_error_at",referenced from:
      _MAIN__ in ccRvJaEQ.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status

如果我理解正确,则链接步骤将失败。关于如何找到必须传递给编译器的相关路径的任何输入将非常有帮助。我搜索了解决方案,但找不到。但是,如果我错过了明显的事情,我表示歉意。

解决方法

感谢msi_gerva通过注释的有用提示,我能够通过下载FFTW并将其编译到installation directions之后的自定义目录中来解决此问题。

现在,如果像这样将库的新位置传递给gfortran,则链接不会失败:

gfortran-10 test.f90 -L/new/path/to/lib -I/new/path/to/include -lfftw3 -lm

由于/usr/local/是默认安装路径,因此以前安装的FFTW库文件可能会混在一起。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...