2016-01-25 208 views
2

我正在執行此makefile以使用gfortran,gcc,netcdf和mpich2庫編譯Fortran代碼。使用gfortran/gcc編譯時出錯:crt1.o:在函數`_start'

當化妝腳本執行下面的命令,

gfortran -O3 -I/home/santiago/Install/mpich2_sam/include -I/home/santiago/Install/netcdf_sam/include /home/santiago/Modeling/SAM6.8.2/SRC/fft.f 

我得到以下信息:

/usr/lib/gcc/x86_64-redhat-linux/4.8.3/../../../../lib64/crt1.o: In function _start': (.text+0x20): undefined reference to main' collect2: error: ld returned 1 exit status

我在論壇上發現了類似的錯誤消息,但我並沒有看到如何在我的問題中應用解決方案。

有人請指導我解決這個問題嗎?

回答

2

如果你正在建設一個圖書館,你可能需要-c標誌

.f.o: 
    ${FF77} ${FFLAGS} $< 

.f.o: 
    ${FF77} ${FFLAGS} -c $< 

這同樣適用於

.f90.o: 
    ${FF90} ${FFLAGS} -c $< 
.c.o: 
    ${CC} ${CFLAGS} -I$(SAM_SRC)/TIMING $(NOTIMERS) -c $< 
+0

它的工作原理。每個對象文件似乎都被編譯。當試圖鏈接對象來構建可執行文件時,將打印這些消息: main.o:在main函數中: main.f90 :(.text.startup + 0x0):多重定義main' –

+0

@PauloSantiago你可能需要通過源文件來查看在多個地方是否定義了* main *函數。 –

+0

@ j-j-hakala,我終於可以編譯程序了。在你的幫助之後,我發現我犯了一些錯誤(例如,用ifort而不是gfortran編譯庫)。非常感謝你! –