一部のソースコードをコンパイルしようとしていますが、端末に「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
。
追加読書
- GCCのバグ#59566
- https://stackoverflow.com/questions/25118052/
- 「プリプロセッサの辞書を含む」。GCC 4.8に移植。 GNUプロジェクト:GCC。
答え2
問題は.Fソースファイルにあります。 C / C ++スタイルのコメントを使用しようとしていますが、Fortranコンパイラはそれをコメントとして扱いません。構文がひどいようです。