Enzo 프로젝트 시뮬레이션을 실행하고 웹사이트에 나열된 단계를 따르려고 합니다.https://enzo.readthedocs.io/en/latest/user_guide/bootcamp.html. 오류가 발생하고 있으며 인터넷 검색을 통해 내가 정확히 무엇을 잘못하고 있는지 알 수 없습니다. 내가 받은 오류는 다음과 같습니다.
Compiling BlockSolve.F
gfortran -c -o BlockSolve.o -fno-second-
underscore -m64 -g -DLINUX -DH5_USE_16_API -D__max_subgrids=100000 -D__max_baryons=30 -D__max_cpu_per_node=8 -D__memory_pool_size=100000 -DINITS64 -DLARGE_INTS -DCONFIG_PINT_8 -DIO_32 -DUSE_MPI -DCONFIG_PFLOAT_8 -DCONFIG_BFLOAT_8 -DUSE_HDF5_GROUPS -DTRANSFER -DNEW_GRID_IO -DFAST_SIB -DENZO_PERFORMANCE -DUSE_UUID -DSAB BlockSolve.F
BlockSolve.F:1070:11:
1070 | NB = ILAENV( 1, 'UGETRF', ' ', M, N, -1, -1 )
| 1
Error: Type mismatch in argument 'ispec' at (1); passed INTEGER(4) to INTEGER(8)
BlockSolve.F:1070:11:
1070 | NB = ILAENV( 1, 'UGETRF', ' ', M, N, -1, -1 )
| 1
Error: Type mismatch in argument 'n3' at (1); passed INTEGER(4) to INTEGER(8)
BlockSolve.F:1070:11:
1070 | NB = ILAENV( 1, 'UGETRF', ' ', M, N, -1, -1 )
| 1
Error: Type mismatch in argument 'n4' at (1); passed INTEGER(4) to INTEGER(8)
BlockSolve.F:932:30:
932 | JP = J - 1 + e_idamax( M-J+1, A( J, J ), 1 )
| 1
Error: Type mismatch in argument 'incx' at (1); passed INTEGER(4) to INTEGER(8)
BlockSolve.F:2628:18:
2628 | ILAENV = IEEECK( 0, 0._RKIND, 1._RKIND )
| 1
Error: Type mismatch in argument 'ispec' at (1); passed INTEGER(4) to INTEGER(8)
BlockSolve.F:2639:18:
2639 | ILAENV = IEEECK( 1, 0._RKIND, 1._RKIND )
| 1
Error: Type mismatch in argument 'ispec' at (1); passed INTEGER(4) to INTEGER(8)
make: *** [BlockSolve.o] Error 1
답변1
이것은 Makefile 오류가 아닙니다.만들다올바른 동작: BlockSolve.F Fortran 소스 코드에 6개의 언어 오류(1070행에 3개 오류, 932, 2628 및 2639행에 각각 1개)가 있기 때문에 빌드가 중지되었습니다.
컴파일 타임 오류를 수정하고 make는 다음 단계로 진행됩니다.
모든 오류는 INT(8)이 필요한 함수에 INT(4) 변수를 전달하는 것과 관련이 있습니다. 다운로드한 소스 코드가 이전 Fortran 표준용이거나 사용자와 다른 아키텍처용이기 때문일 수 있습니다.
인용한 문서에는 실제로 "이로 인해 불일치가 발생합니다. C/C++ 코드는 항상 올바른 비트 너비를 갖지만 Fortran 코드는 올바른 비트 너비를 보장하기 위해 이러한 변수를 올바르게 설정해야 하며 필요한 4개의 변수가 있다고 명시되어 있습니다." 올바른 설정(예: MACH_FFLAGS_INTEGER_64)이 되도록 하고 다양한 아키텍처와 운영 체제에 대해 여러 makefile이 제공됩니다.
또한 이 문서에서는 이러한 문제를 해결하는 데 도움이 되는 포럼에 대한 링크도 제공합니다 enzo-users
.