2015-04-24 821 views
0

我試圖編譯一些源代碼,但我看到下面的錯誤輸出進入後「做」: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(這很長)。

+5

這個命令行'mpicc -c -O3 -I func_pointer.c'的問題是你沒有'-I'標誌的​​參數,所以它看到'func_pointer.c'作爲那個參數,它離開它沒有文件操作。話雖如此,我並不完全確定,我明白你在這一點上實際存在着什麼問題,或者反覆向我們展示這些貝殼紋的點是否應該給我們提供幫助。 –

+0

RE:shell腳本的重複行。我認爲它可能解決了類似的問題,我曾經這樣做過,所以我儘管可能適合向他們展示。我不明白這個(可能的)解決方案,我認爲有人可以用我解決當前問題的任何解決方案來解釋它們。 '-I'標誌是做什麼的? – deiniol

+1

這三個命令'mpicc','mpicc -show'和(錯誤)'mpicc -V'命令都是*做*什麼都不做。第一個只是顯示二進制文件的位置。第二個只是向你展示了它將運行的命令。最後一步是將'-V'傳遞給'gcc',它不理解它,'gcc'則傳遞錯誤,因爲它沒有被處理的文件。 '-I'標誌到'gcc'增加了'gcc'搜索包含文件的目錄。 –

回答

-1

我得到了類似的錯誤

gcc -g -o cachesimulator.c 
gcc: fatal error: no input files 
compilation terminated. 
make: *** [cachesimulator] Error 4 

所以,我只是改名爲Makefile來Makefile.txt,然後再次運行。有效。

+4

無論問題是什麼,刪除makefile都是錯誤的解決方案。 – Jens

1

在新硬盤上編譯FVCOM後再次遇到它,回答我自己的問題。問題是,由Etan提出,-I國旗。在make.inc文件中,取消註釋本地安裝下的LIBDIR和INCDIR變量,並直接在上面註釋掉相同的變量。

相關問題