我正在尝试使用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&lt;'来编译另一个C代码,然后就可以了。)
我该怎么办?谢谢!
PS我的操作系统是OSX
答案 0 :(得分:2)
您不能使用相同的编译器来编译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。