我正在尝试使用 gfortran
编译 Fortran 源代码(我没有编写)。该代码调用 C 函数 drand48.c
,其源代码位于同一文件夹中。
问题是,当我这样做时:
gfortran -o filename.exe filename.f drand48.c
我收到以下错误消息:
drand48.c:1:20: fatal error: stdlib.h: No such file or directory
#include <stdlib.h>
^
compilation terminated.
现在,我确定我拥有标准库,因为我一直在 C 中使用它(我只是用 `#include <' 编译了另一个 C 代码,然后就可以了)。
我能做什么?谢谢!
PS 我的操作系统是 OSX
最佳答案
您不能使用相同的编译器来编译 C 和 Fortran。相反,您应该首先使用适当的编译器从每个源文件编译对象:
gcc -c -o ccode.o ccode.c
gfortran -c -o fcode fcode.f
-c
选项告诉编译器在这种情况下创建对象,而不是可执行文件。
然后链接这些对象。因为 Fortran 需要链接到它的运行时库,所以使用您用来创建 Fortran 对象的 Fortran 编译器来链接所有对象并创建可执行文件:
gfortran ccode.o fcode.o -o myprogram
如果您必须经常这样做,您应该设置一个 Makefile。
关于来自 Fortran 的 C 代码 : fatal error: stdlib. h: 没有那个文件或目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36766285/