gfortran包含文件,即使使用-I选项也会被忽略

时间:2016-03-10 03:30:38

标签: compilation fortran gfortran

我正在尝试使用以下内容使用gfortran进行编译:

$ gfortran -I/usr/local/include -O3 -Wall -Wno-uninitialized -fbounds-check -g alignparts_lmbfgs.f90 /home/vincent/test/lmbfgs/Lbfgsb.3.0/lbfgsb.f /home/vincent/test/lmbfgs/Lbfgsb.3.0/linpack.f /home/vincent/test/lmbfgs/Lbfgsb.3.0/blas.f /home/vincent/test/lmbfgs/Lbfgsb.3.0/timer.f /home/vincent/test/lmbfgs/minimal_libraries/imlib2010.a /home/vincent/test/lmbfgs/minimal_libraries/genlib.a -o alignparts_lmbfgs.exe -lfftw3 -lm

但它给了我错误

alignparts_lmbfgs.f90:105: Error: Can't open included file '/usr/include/fftw3.f'

即使我指定了fftw3.f所在的-I选项。

我做错了什么?我没有root权限,因此我无法将文件从/ usr / local / include移动到/ usr / inlcude

我是编曲的菜鸟。我只是编译,因为这是我获取可执行文件的唯一方法。在解释时,请尽可能保证免费。非常感谢你!

1 个答案:

答案 0 :(得分:0)

编译器报告:

alignparts_lmbfgs.f90:105: Error: Can't open included file '/usr/include/fftw3.f'

这意味着您的源文件alignparts_lmbfgs.f90包含 一行#105喜欢:

INCLUDE '/usr/include/fftw3.f'

告诉编译器将文件/usr/include/fftw3.f复制到位 该行#105。但是没有这样的文件。

您已通过编译器选项-I/usr/local/include 告诉编译器在/usr/local/include中搜索包含的文件, 你说:

  

我指定了fftw3.f所在的-I选项。

所以可能是这样的文件/usr/local/include/fftw3.f

在这种情况下,可以改变:

INCLUDE '/usr/include/fftw3.f'

为:

INCLUDE '/usr/local/include/fftw3.f'

但是,如果你这样做,那么编译器选项:

-I/usr/local/include

没有意义,因为/usr/local/include/fftw3.f是绝对文件名: 它要么存在要么不存在。

如果您希望程序可以独立于绝对位置进行编译 fftw3.f - 这是最佳实践 - 然后用以下代码替换第105行:

INCLUDE 'fftw3.f'

然后,如果fftw3.f实际上位于/usr/local/include,您可以编译 带有选项-I/usr/local/include的程序,通常是文件 位于目录/look/here/for/headers中,您可以编译该程序 使用选项-I/look/here/for/headers