의 결과입니다. 프로그램 main.f90
은 모듈 cic.f90
만을 사용합니다.간단한 메이크 내가 메이크와 아주 간단한 프로그램을 컴파일하려고 분할 오류
main.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
모듈 파일 : 내가 만든 cic.f90
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
Heres는 간단한 메이크 :
이
는 파일입니다#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
파일을 생성하지만 시도하고 실행할 때 내가 우분투를 실행하는 가상 머신을 사용하고 다음과 같은 오류를
Segmentation fault (core dumped)
을 제공합니다. 는 목표를 함께 할 수있는 것이 무엇인가 아니면 내가 모듈 파일을 명명하는 방법, 그것은 cic.mod
대신 .f90
해야 또는 모듈의 대상이 .mod
대신 .o
해야 하는가? 나는 다음과 같은 기록 터미널을 사용하여 컴파일 할 때
또한, (여기, file.o
의 main.exe
)
gfortran main.f90 cic.f90 -o main.so
모든
보여주세요 ** 정확한 ** 당신은 메이크. 거기에는'gfortran-c'가 없습니다 ... 또한 실행 파일의 이름을 왜 main.so로 지정합니까? 확장자'.so '는 프로그램이 아닌 공유 라이브러리를위한 것이다. 또한, 어떤 정확한 명령으로 Segmantation 오류가 발생합니다. 단순한'./main.so' 인 경우에도 사용중인 정확한 양식을 적어주십시오. (그리고 BTW,'real = 8'은 못생긴 것입니다. 이식성이없고 악의가없고 이중 정밀도와 같지 않습니다. 그러나 여기에 너무 많이 썼습니다.) –
typo here? 'gfortran-c' – agentp
오타, 물론 이죠,하지만 우리가 실제 Makefile을 받고 있지 표시,하지만 쓸모가있을 수있는 몇 가지 단순화이다. 실제 메이크입니다 –