Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在makefile中包含库时出错_Makefile_Fortran - Fatal编程技术网

在makefile中包含库时出错

在makefile中包含库时出错,makefile,fortran,Makefile,Fortran,我在makefile中包含库时遇到一些问题 库nlopt安装在/usr/lib中,当我从命令行编译它时,我的程序会正常运行: gfortran-I/usr/include main.f90-L/usr/lib-lnlopt-lm-o exec 但是我需要使用一个makefile。下面这个看起来不错,但不起作用,我明白了: main.f90:19:错误:无法打开包含的文件“nlopt.f” 你能帮我找到这个错误吗 在$f90comp和rm之前,有一个选项卡您的错误消息告诉您,在main.f90中包

我在makefile中包含库时遇到一些问题

库nlopt安装在/usr/lib中,当我从命令行编译它时,我的程序会正常运行:

gfortran-I/usr/include main.f90-L/usr/lib-lnlopt-lm-o exec

但是我需要使用一个makefile。下面这个看起来不错,但不起作用,我明白了:

main.f90:19:错误:无法打开包含的文件“nlopt.f”

你能帮我找到这个错误吗


在$f90comp和rm之前,有一个选项卡

您的错误消息告诉您,在main.f90中包含的nlopt.f在编译时不可用。需要向编译器提供此文件的路径。您在一行程序中正确地执行了此操作,因为您在提供路径的同时一次性编译和链接:

gfortran -I/usr/include main.f90 -L/usr/lib -lnlopt -lm -o exec
因为这是可行的,而make不是,所以nlopt.f显然与main.f90不在同一目录中,而是在/usr/include中。您需要修改Makefile中的编译行:

main.o: main.f90
    $(f90comp) -I/usr/include -c main.f90

错误消息告诉您,在编译时,包含在main.f90中的nlopt.f不可用。需要向编译器提供此文件的路径。您在一行程序中正确地执行了此操作,因为您在提供路径的同时一次性编译和链接:

gfortran -I/usr/include main.f90 -L/usr/lib -lnlopt -lm -o exec
因为这是可行的,而make不是,所以nlopt.f显然与main.f90不在同一目录中,而是在/usr/include中。您需要修改Makefile中的编译行:

main.o: main.f90
    $(f90comp) -I/usr/include -c main.f90

文件nlopt.f在哪里?是否在usr/include中?你确定编译器不关心参数顺序吗?我会尝试完全相同的顺序来确定。你能显示make的全部输出吗?我有一种感觉,你的错误消息前的那一行很有启发性。有时尝试make-n也很有用,因为它只会显示make试图运行的命令。文件nlopt.f在哪里?是否在usr/include中?你确定编译器不关心参数顺序吗?我会尝试完全相同的顺序来确定。你能显示make的全部输出吗?我有一种感觉,在您的错误消息之前的那一行很有启发性。尝试make-n有时也很有用,因为它只会向您显示make试图运行的命令。