[問題]intel fortran compiler

看板Programming作者時間18年前 (2007/11/08 17:53), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串1/2 (看更多)
compiler:Intel(R) Fortran Compiler Options(10.1) 系統: linux   目前我寫了三個程式,主程式為pro1.f90,其中要用到 subroutine a和subroutine b。而 pro2.f90就是subroutine a, 其中subroutine a 要用到subroutine b, pro3.f90 就 是subroutine b。接著我用makefile如下: ======================================================================== FC = ifort OP = -O3 LIB = -L/opt/intel/mkl/8.1/lib/em64t -lmkl -lmkl_lapack -lguide -lpthread a.out : pro1.f.f90 pro2.o pro3.o $(FC) $(OP) -o a.out pro1.f90 pro2.o pro3.o $(LIB) pro2.o : pro2.f $(FC) $(OP) -c pro2.f90 $(LIB) pro3.o : pro3.f $(FC) $(OP) -c pro3.f90 $(LIB) clean : rm *.o ======================================================================= make後執行./a.out 卻發生以下錯誤: ======================================================================= n= 100 particleN 1 L= 0 parL= 5 n= 100 L= 5 parL= 5 end of Pl(theta) !!到這裡算是執行正確。 forrtl: severe (174): SIGSEGV, segmentation fault occurred Image PC Routine Line Source libifcore.so.5 0000002A959C45FC Unknown Unknown Unknown libpthread.so.0 000000373870C4F0 Unknown Unknown Unknown libifcore.so.5 0000002A959C45D5 Unknown Unknown Unknown libpthread.so.0 000000373870C4F0 Unknown Unknown Unknown ======================================================================== 可是奇怪的,我把pro2.f90的程式碼直接貼到pro1.f90裡面,接著執行: ifort –O3 -L/opt/intel/mkl/8.1/lib/em64t -lmkl -lmkl_lapack -lguide –lpthread pro1.f90 pro3.o 接著執行產生的執行檔,結果完全沒有錯誤。 由上面應該可以確認我的程式碼沒有錯誤,但我有找不 出makefile這樣寫有什麼不對。又或者把主程式和subroutine 拆開成兩個檔案有什麼特別需要注意的嗎?請各位高手給些意見吧。 謝謝! ※ 編輯: physicschild 來自: 140.112.101.161 (11/08 18:54)

11/09 23:15, , 1F
我自己是用 ifort 直接compile兩個檔案
11/09 23:15, 1F

11/09 23:16, , 2F
沒用過make 所以.....不知道有沒有幫上忙
11/09 23:16, 2F

11/09 23:16, , 3F
ex. "ifort a.f b.f"
11/09 23:16, 3F

11/10 12:50, , 4F
謝謝囉!
11/10 12:50, 4F
文章代碼(AID): #17Cjog0S (Programming)
討論串 (同標題文章)
文章代碼(AID): #17Cjog0S (Programming)