【问题标题】:gcc: fatal error: no input filesgcc:致命错误:没有输入文件
【发布时间】:2026-01-14 21:30:01
【问题描述】:

我正在尝试编译一些源代码,但输入“make”后出现以下错误输出:

mpicc -c -O3 -I        func_pointer.c
gcc: fatal error: no input files
compilation terminated.
make: *** [func_pointer.o] Error 4

我在本网站上看到了与此错误输出相关的其他线程(123)。事实上,我以前遇到过类似的问题,我想我可能已经解决了,“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 -P -C -traditional  -DIFORT -P -C -traditional    -DWET_DRY -DMULTIPROCESSOR    -DLIMITED_NO  -DGCN                                        mod_prec.F > mod_prec.f90
mpif90  -c  -O3 -I        mod_prec.f90
gfortran: fatal error: no input files
compilation terminated.
make: *** [mod_prec.o] Error 4

我遵循了website 中建议的步骤,我认为这可能已经解决了这个问题(我相信我正在通过 makefile 进一步取得进展)。这些步骤如下:

dan@Dan-office ~/FVCOM3.2.2/FVCOM_source $ which mpif90
/usr/local/bin/mpif90
dan@Dan-office ~/FVCOM3.2.2/FVCOM_source $ mpif90 -show
gfortran -I/usr/local/include -pthread -I/usr/local/lib -Wl,-rpath -Wl,/usr/local/lib -Wl,--enable-new-dtags -L/usr/local/lib -lmpi_usempi -lmpi_mpifh -lmpi
dan@Dan-office ~/FVCOM3.2.2/FVCOM_source $ mpif90 -V
gfortran: error: unrecognized command line option ‘-V’
gfortran: fatal error: no input files
compilation terminated.
dan@Dan-office ~/FVCOM3.2.2/FVCOM_source $ export MPI_LOC=/usr/local
dan@Dan-office ~/FVCOM3.2.2/FVCOM_source $ export MPI_INCLUDE="$MPI_LOC"/includedan@Dan-office ~/FVCOM3.2.2/FVCOM_source $ export MPI_LIB="$MPI_LOC"/lib
dan@Dan-office ~/FVCOM3.2.2/FVCOM_source $ export LD_LIBRARY_PATH=$MPI_LIB:$LD_LIBRARY_PATH
dan@Dan-office ~/FVCOM3.2.2/FVCOM_source $ export LIBMPI="-pthread -Wl -rpath -Wl -Wl,--enable-new-dtags -lmpi -lmpi_usempi -lmpi_mpifh -lmpi"

还有一个步骤:

dan@Dan-office ~/FVCOM3.2.2/FVCOM_source $ make clean
/bin/rm -f *.o *.mod *.f90

这将我带到了现在的位置。我的直觉是,我当前问题的解决方案将类似于我之前的问题。但是,我是 linux/c/fortran 的新手,所以我不确定我是否完全遵循以前的解决方案。因此,以下命令会产生以下输出:

dan@Dan-office ~/FVCOM3.2.2/FVCOM_source $ which mpicc
/usr/local/bin/mpicc
dan@Dan-office ~/FVCOM3.2.2/FVCOM_source $ mpicc -show
gcc -I/usr/local/include -pthread -Wl,-rpath -Wl,/usr/local/lib -Wl,--enable-new-dtags -L/usr/local/lib -lmpi
dan@Dan-office ~/FVCOM3.2.2/FVCOM_source $ mpicc -V
gcc: error: unrecognized command line option ‘-V’
gcc: fatal error: no input files
compilation terminated.

我是否未能正确定义导致此问题的一些变量?我意识到这个问题变得相当长,但是如果需要,我可以添加其他信息,例如 makefile(虽然这很长)。

【问题讨论】:

  • 这个命令行mpicc -c -O3 -I func_pointer.c 的问题是你没有-I 标志的参数,所以它看到func_pointer.c 作为那个参数,它没有文件可以操作.话虽如此,我完全不确定我是否了解您此时实际上遇到了什么问题,或者反复向我们展示这些 shell 行应该告诉我们什么。
  • RE:shell 脚本的重复行。我认为它可能解决了与我之前遇到的问题类似的问题,所以我认为展示它们可能是相关的。我不明白那个(可能的)解决方案,我认为有人可以在我当前问题的任何解决方案中解释它们。 -I 标志有什么作用?
  • 这三个命令which mpiccmpicc -show 和(错误的)mpicc -V 命令做什么什么都没有。第一个只是向您显示二进制文件的位置。第二个只是向您展示它将运行的大概是什么命令。最后一个只是将-V 传递给gcc,它不理解它,gcc 然后错误,因为它没有文件可以操作。 -I 标志 gcc 添加到 gcc 在其中搜索包含文件的目录。

标签: gcc makefile mpi


【解决方案1】:

在新硬盘上编译 FVCOM 时再次遇到问题后回答我自己的问题。正如 Etan 所提出的,问题是 -I 标志。在 make.inc 文件中取消注释本地安装下的 LIBDIR 和 INCDIR 变量,并直接将上面的相同变量注释掉。

【讨论】:

    最近更新 更多