助教您好:我在編譯paraseis時遇到了一些問題,想要跟助教請教一下
我目前已經成功執行完lib.src.latest裡面的install了,目前正在跑src裡面的make。我使用原本的makefile時會遇到Error: Rank mismatch between actual argument at (1) and actual argument at (2) (scalar and rank-1)
的問題,因此我在compile flag中加入-fallow-argument-mismatch -fPIC
這個flag,但是加入這個flag之後就遇到了令一個問題
/usr/bin/ld: ../lib/libfepg.a(subtime.o): relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIE
/usr/bin/ld: failed to set dynamic section sizes: bad value
collect2: error: ld returned 1 exit status
我有在試著在後面加入-no-pie
的flag:
加入這個flag之後fortran就會讀不到一些library,似乎不是很好的解決方式
mpif90 -o ddm ddm.o esddm.o mstart.o mbft.o nuc8g2.o agq4.o alq4.o mgather.o incore.o mazsendpart.o mazrecvpart.o msazrecvpart.o timer.o inimpi.o intcommu.o realcommu.o ../lib/libblas.a ../lib/libfepg.a ../lib/libmetis.a ../lib/libfepgsolv.a -lm -no-pie
/usr/bin/ld: ../lib/libfepg.a(fepglib.o): in function `smit_':
fepglib.f:(.text+0x301a): undefined reference to `_gfortran_stop_numeric_f08'
collect2: error: ld returned 1 exit status
make: *** [makefile:48: ddm] Error 1
請問有什麼比較好的解決方式嗎?謝謝助教!!!