[問題]intel fortran compiler
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
11/09 23:15, 1F
→
11/09 23:16, , 2F
11/09 23:16, 2F
→
11/09 23:16, , 3F
11/09 23:16, 3F
→
11/10 12:50, , 4F
11/10 12:50, 4F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
Programming 近期熱門文章
PTT數位生活區 即時熱門文章