我試圖編譯一些源代碼,但我看到下面的錯誤輸出進入後「做」:GCC:致命錯誤:沒有輸入文件
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: 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進一步發展)。這些步驟如下:
[email protected] ~/FVCOM3.2.2/FVCOM_source $ which mpif90
/usr/local/bin/mpif90
[email protected] ~/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
[email protected] ~/FVCOM3.2.2/FVCOM_source $ mpif90 -V
gfortran: error: unrecognized command line option ‘-V’
gfortran: fatal error: no input files
compilation terminated.
[email protected] ~/FVCOM3.2.2/FVCOM_source $ export MPI_LOC=/usr/local
[email protected] ~/FVCOM3.2.2/FVCOM_source $ export MPI_INCLUDE="$MPI_LOC"/[email protected] ~/FVCOM3.2.2/FVCOM_source $ export MPI_LIB="$MPI_LOC"/lib
[email protected] ~/FVCOM3.2.2/FVCOM_source $ export LD_LIBRARY_PATH=$MPI_LIB:$LD_LIBRARY_PATH
[email protected] ~/FVCOM3.2.2/FVCOM_source $ export LIBMPI="-pthread -Wl -rpath -Wl -Wl,--enable-new-dtags -lmpi -lmpi_usempi -lmpi_mpifh -lmpi"
隨着額外的步驟:
[email protected] ~/FVCOM3.2.2/FVCOM_source $ make clean
/bin/rm -f *.o *.mod *.f90
這給我帶來了我目前在哪裏。我的直覺是,我目前問題的解決方案與我以前的問題類似。但是,我是linux/c/fortran的新手,所以我不確定我完全遵循以前的解決方案。因此,以下命令會生成以下輸出:
[email protected] ~/FVCOM3.2.2/FVCOM_source $ which mpicc
/usr/local/bin/mpicc
[email protected] ~/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
[email protected] ~/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'作爲那個參數,它離開它沒有文件操作。話雖如此,我並不完全確定,我明白你在這一點上實際存在着什麼問題,或者反覆向我們展示這些貝殼紋的點是否應該給我們提供幫助。 –
RE:shell腳本的重複行。我認爲它可能解決了類似的問題,我曾經這樣做過,所以我儘管可能適合向他們展示。我不明白這個(可能的)解決方案,我認爲有人可以用我解決當前問題的任何解決方案來解釋它們。 '-I'標誌是做什麼的? – deiniol
這三個命令'mpicc','mpicc -show'和(錯誤)'mpicc -V'命令都是*做*什麼都不做。第一個只是顯示二進制文件的位置。第二個只是向你展示了它將運行的命令。最後一步是將'-V'傳遞給'gcc',它不理解它,'gcc'則傳遞錯誤,因爲它沒有被處理的文件。 '-I'標誌到'gcc'增加了'gcc'搜索包含文件的目錄。 –