来自 Fortran 的 C 代码 : fatal error: stdlib. h: 没有那个文件或目录

标签 c fortran

我正在尝试使用 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/

相关文章:

performance - 不同优化下的 Fortran 矩阵乘法性能

python - subprocess.Popen 和缓冲进程输出

fortran - Fortran 中跳过空行

关于指针使用的说明

c++ - 带有 MSG_PEEK 的 C 'recv' 不返回 -1

c - 是否打开了一个文件来代替缓冲的 stderr?

c++ - 链接 C++ 和 Fortran90 代码时出错

c - 如何参数化提交到外部库的回调函数

c - 为什么使用 4096 个元素作为 char 数组缓冲区?

c - idb 找不到函数——有什么提示吗?