【发布时间】: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
我在本网站上看到了与此错误输出相关的其他线程(1、2、3)。事实上,我以前遇到过类似的问题,我想我可能已经解决了,“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 mpicc、mpicc -show和(错误的)mpicc -V命令做什么什么都没有。第一个只是向您显示二进制文件的位置。第二个只是向您展示它将运行的大概是什么命令。最后一个只是将-V传递给gcc,它不理解它,gcc然后错误,因为它没有文件可以操作。-I标志gcc添加到gcc在其中搜索包含文件的目录。