2014-04-07 67 views
0

最近,當我試圖在Linux上使用英特爾編譯器版本11.1.073編譯Fortran代碼,我遇到了以下錯誤:未定義的參考`for_simd_random_number」

>>> BUILDING: PaSR 
make[1]: Entering directory `/autofs/na3_home1/xl/ISAT_V11/PaSR' 
ftn -O2 -fPIC -I../isatab_ser -I../isat-ck -I../ice-pic -c pasr.f 
ftn -O2 -fPIC -I../isatab_ser -I../isat-ck -I../ice-pic -c pasrsubs.f 
ftn -O2 -fPIC -I../isatab_ser -I../isat-ck -I../ice-pic -c usrate.f 
ftn -o PaSR pasr.o pasrsubs.o usrate.o -Bstatic -L/ccs/home/xl/ISAT_V11/lib 
-lisat7_ser -lck_ext -llapack -Bstatic 
/ccs/home/xl/ISAT_V11/lib/libisat7_ser.a(ci_ice_pic_bound.o): In 
function `ci_ice_pic_bound_test_': 
ci_ice_pic_bound.f90:(.text+0x34f): undefined reference to `for_simd_random_number' 
/usr/bin/ld: link errors found, deleting executable `PaSR' 
make[1]: *** [PaSR] Error 1 
make[1]: Leaving directory `/autofs/na3_home1/xl/ISAT_V11/PaSR' 
make: *** [build-programs] Error 1 

在我看來,該代碼不能找到它需要的特定lib(在intel共享庫中),從而導致錯誤。我已經成功地使用了intel/13.1.3.192來編譯它。但與intel/11.1.073不兼容。我在網上搜索了'for_simd_random_number',但沒有找到線索。

請提供您的智慧。我很感激!

+0

你確定它是英特爾?你設定了環境嗎? –

+0

是的,我加載了PrgEnv-intel並且還使用了intel/11.1.073。 – elfsummer

回答

0

符號for_simd_random_number在intel fortran 13中的庫ifcore中定義。但它不存在於您的intel fortran 11庫中,因此您無法再次鏈接它。

+0

感謝您的帖子。我試圖添加-lifcore到我的Makefile中的鏈接器標誌如下(糾正我,如果我錯了):LDFLAGS = -L $(LIBS_PATH)-lisat7_ser -lck_ext $(MKL_LIST)-lifcore它仍然給了我同樣的錯誤:ftn -o PaSR pasr.o pasrsubs.o usrate.o -Bstatic -L/ccs/home/xl/ISAT_V11/lib -lisat7_ser -lck_ext -llapack -lifcore -Bstatic /ccs/home/xl/ISAT_V11/lib/libisat7_ser.a(ci_ice_pic_bound.o):在函數'ci_ice_pic_bound_test_'中: ci_ice_pic_bound.f90 :(.text + 0x34f):未定義的引用'for_simd_random_number' – elfsummer

+0

其任一鏈接器[order](http://stackoverflow.com/questions/45135/linker-order-gcc)或者符號確實不存在? (爲intel 11安裝提供nm libifcore.so.X | grep「for_simd_random_number」) – Peter

+0

/opt/intel/Compiler/11.1/073/lib/intel64> nm libifcore.so.5 | grep「for_simd_random_number」我試過但它沒有給我提供任何東西:( – elfsummer