추가 읽기

추가 읽기

일부 소스 코드를 컴파일하려고 하는데 터미널에 "make" 명령을 입력하면 오류가 발생합니다. 제한된 이해에 따르면 코드가 .F 파일에서 .f90 파일을 생성하려고 할 때 문제가 발생하는 것 같습니다. 온라인에서 읽어보면 문제가 c 전처리기와 관련이 있는 것 같습니다. ac 헤더가 .f90 파일에 추가되고 gfortran에 문제가 있는 것 같습니다. "make" 명령의 출력은 다음과 같습니다.

make: Circular mod_prec.o <- mod_prec.o dependency dropped.
make: Circular mod_prec.o <- mod_prec.o dependency dropped.

make: Circular mod_prec.o <- mod_prec.o dependency dropped.
/usr/bin/cpp-4.8 -P -C -traditional  -DGFORTRAN -P -C -traditional    -DWET_DRY -DMULTIPROCESSOR    -DLIMITED_NO  -DGCN                                        mod_prec.F > mod_prec.f90
/usr/bin/gfortran-4.8  -c   -I/home/dan/FVCOM3.2.2/FVCOM_source/libs/install/include        mod_prec.f90
Warning: Nonexistent include directory "/home/dan/FVCOM3.2.2/FVCOM_source/libs/install/include"
mod_prec.f90:1.1:

/* Copyright (C) 1991-2012 Free Software Foundation, Inc.
 1
Error: Invalid character in name at (1)
mod_prec.f90:2.3:

   This file is part of the GNU C Library.
   1
Error: Unclassifiable statement at (1)
mod_prec.f90:4.3:

   The GNU C Library is free software; you can redistribute it and/or
   1
Error: Unclassifiable statement at (1)
mod_prec.f90:4.39:

   The GNU C Library is free software; you can redistribute it and/or
                                       1
Error: Unclassifiable statement at (1)
mod_prec.f90:5.3:

   modify it under the terms of the GNU Lesser General Public
   1
Error: Unclassifiable statement at (1)
mod_prec.f90:6.3:

   License as published by the Free Software Foundation; either
   1
Error: Unclassifiable statement at (1)
mod_prec.f90:6.57:

   License as published by the Free Software Foundation; either
                                                         1
Error: Unclassifiable statement at (1)
mod_prec.f90:7.3:

   version 2.1 of the License, or (at your option) any later version.
   1
Error: Unclassifiable statement at (1)
mod_prec.f90:9.3:

   The GNU C Library is distributed in the hope that it will be useful,
   1
Error: Unclassifiable statement at (1)
mod_prec.f90:10.3:

   but WITHOUT ANY WARRANTY; without even the implied warranty of
   1
Error: Unclassifiable statement at (1)
mod_prec.f90:10.29:

   but WITHOUT ANY WARRANTY; without even the implied warranty of
                             1
Error: Unclassifiable statement at (1)
mod_prec.f90:11.3:

   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   1
Error: Unclassifiable statement at (1)
mod_prec.f90:12.3:

   Lesser General Public License for more details.
   1
Error: Unclassifiable statement at (1)
mod_prec.f90:14.3:

   You should have received a copy of the GNU Lesser General Public
   1
Error: Unclassifiable statement at (1)
mod_prec.f90:15.3:

   License along with the GNU C Library; if not, see
   1
Error: Unclassifiable statement at (1)
mod_prec.f90:15.41:

   License along with the GNU C Library; if not, see
                                         1
Error: Unclassifiable statement at (1)
mod_prec.f90:16.4:

   <http://www.gnu.org/licenses/>.  */
    1
Error: Invalid character in name at (1)
mod_prec.f90:19.1:

/* This header is separate from features.h so that the compiler can
 1
Error: Invalid character in name at (1)
mod_prec.f90:20.3:

   include it implicitly at the start of every compilation.  It must
   1
Error: Unclassifiable statement at (1)
mod_prec.f90:21.3:

   not itself include <features.h> or any other header that includes
   1
Error: Unclassifiable statement at (1)
mod_prec.f90:22.4:

   <features.h> because the implicit include comes before any feature
    1
Error: Invalid character in name at (1)
mod_prec.f90:23.3:

   test macros that may be defined in a source file before it first
   1
Error: Unclassifiable statement at (1)
mod_prec.f90:24.3:

   explicitly includes a system header.  GCC knows the name of this
   1
Error: Unclassifiable statement at (1)
mod_prec.f90:25.3:

   header in order to preinclude it.  */
   1
Error: Unclassifiable statement at (1)
mod_prec.f90:27.1:

/* Define __STDC_IEC_559__ and other similar macros.  */
 1
Error: Invalid character in name at (1)
Fatal Error: Error count reached limit of 25.
make: *** [mod_prec.o] Error 1

저는 Linux를 처음 접했고 C나 FORTRAN에 대한 실제 지식이 없으므로 이 질문이 어리석었다면 죄송합니다.

출력 파일(이 경우 mod_prec.f90)에는 다음 헤더가 포함되어 있는데, 이는 주석이 C 형식이기 때문에 오류가 발생하는 이유입니다.

/* Copyright (C) 1991-2012 Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, see
   <http://www.gnu.org/licenses/>.  */


/* This header is separate from features.h so that the compiler can
   include it implicitly at the start of every compilation.  It must
   not itself include <features.h> or any other header that includes
   <features.h> because the implicit include comes before any feature
   test macros that may be defined in a source file before it first
   explicitly includes a system header.  GCC knows the name of this
   header in order to preinclude it.  */

/* Define __STDC_IEC_559__ and other similar macros.  */
/* Copyright (C) 2005 Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, write to the Free
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   02111-1307 USA.  */



/* We do support the IEC 559 math functionality, real and complex.  */


/* wchar_t uses ISO/IEC 10646 (2nd ed., published 2011-03-15) /
   Unicode 6.0.  */

/* We do not support C11 <threads.h>.  */

답변1

이것은GCC 버그 #65387. 보시다시피 전원이 꺼졌으며 오류가 아닙니다. C/C++ 전처리기는 C/C++ 코드를 후처리된 Fortran 프로그램으로 보냅니다.C/C++전처리기.

Fortran 프로그램에서 C/C++ 전처리기를 사용하려는 경우GCC 자체 Fortran doco에 따르면그런 다음 GCC Fortran doco가 알려주지 않는 부분을 수행하고 사용하십시오 -fstandalone.

추가 읽기

답변2

문제는 .F 소스 파일에 있습니다. C/C++ 스타일 주석을 사용하려고 하는데 Fortran 컴파일러가 이를 주석으로 처리하지 않습니다. 구문이 끔찍한 것 같습니다.

관련 정보