问题描述
我在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库文件可能会混在一起。