gfortran 包含即使使用 -I 选项也会被忽略的文件
gfortran include files ignored even with -I options
我正在尝试使用 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
我是个编译小白。我只是在编译,因为这是我获得可执行文件的唯一方式。解释时请尽可能避免菜鸟。非常感谢!
编译器报告:
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
中搜索包含的文件,
你说:
I specified the -I options where the fftw3.f resides.
所以可能是这样的文件/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
.
我正在尝试使用 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
我是个编译小白。我只是在编译,因为这是我获得可执行文件的唯一方式。解释时请尽可能避免菜鸟。非常感谢!
编译器报告:
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
中搜索包含的文件,
你说:
I specified the -I options where the fftw3.f resides.
所以可能是这样的文件/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
.