我正在尝试使用Makefile编译一个非常简单的程序。
程序<?php
$date=$row['created'];
echo date_format($date,"F d,Y - H:i:s");
?>
只使用模块main.f90
。
这些是文件:
main.f90
cic.f90
模块文件: cic.f90
program main
use cic, only: pi, area
implicit none
real(kind=8) :: a
! print parameter pi defined in module:
print *, 'pi = ', pi
! test the area function from module:
a = area(2.d0)
print *, 'area for a circle of radius 2: ', a
end program main
这是我创建的简单Makefile:
module cic
implicit none
real(kind=8), parameter :: pi = 3.141592653589793d0
contains
real(kind=8) function area(r)
real(kind=8), intent(in) :: r
area = pi * r**2
end function area
real(kind=8) function circumference(r)
real(kind=8), intent(in) :: r
circumference = 2.d0 * pi * r
end function circumference
end module cic
这会创建一个#Makefile
main.so: main.f90 cic.o
gfortran -o main.so main.f90 cic.o
cic.o: cic.f90
gfortran-c cic.f90
文件但是当我尝试运行它时会出现以下错误
main.so
我正在使用运行Ubuntu的虚拟机。
它是否与目标或我如何命名模块文件有关,如果它是Segmentation fault (core dumped)
而不是cic.mod
,或者模块的目标应该是.f90
而不是.mod
}?
此外,当我使用终端编译以下内容时编译:
.o
一切正常
答案 0 :(得分:3)
#Makefile
main.exe: main.o cic.o
gfortran -o $@ $^
%.o: %.f90
gfortran -c $<
$@
是目标(此处main.exe
为file.o
),$^
为“所有先决条件”(此处为main.o
和{{1} })和cic.o
是'先决条件'(此处为$<
或cic.f90
)。见https://www.gnu.org/software/make/manual/make.html
我在不中使用main.f90
作为共享对象的其他内容的扩展名为第二个Vladimir F.
如果您仍然遇到代码问题,请向我们展示实际代码,实际makefile等。
编辑:PS:如果您复制粘贴Makefile,请确保用缩进替换缩进。