проблемы intel_sse2 при линковке на gsl с icc

Моя программа связана как с PETSc, так и с gsl, и обе библиотеки были скомпилированы с помощью icc. Вот команда ссылки:

/usr/local/mpich2/bin/mpicc -Wall -Wwrite-strings -Wno-strict-aliasing -Wno-unknown-pragmas -g3 -I/usr/local/gsl-icc-1.15/include/ -I/usr/local/gsl-icc-1.15/include/ -L/usr/local/gsl-icc-1.15/lib/ -lgsl -lgslcblas prog_name.o -L/usr/local/petsc-3.2-p6/lib  -lpetsc -lX11 -lpthread -llapack -lblas -L/central/intel/Compiler-11.1.072/mkl/lib/em64t -L/central/intel/Compiler-11.1.072/lib/intel64 -L/central/intel/Compiler-11.1.072/tbb/intel64/cc3.4.3_libc2.3.4_kernel2.6.9/lib -L/usr/lib/gcc/x86_64-redhat-linux/4.1.2 -ldl -lgcc_s -lifport -lifcore -limf -lsvml -lm -lipgo -lirc -lpthread -lirc_s -lm -lstdc++ -lstdc++ -ldl -lgcc_s -ldl  -o prog_name

MPICH_CC имеет значение icc, поэтому mpicc вызывает компилятор Intel.

Когда я пытаюсь создать ссылку на файл gsl .so, я получаю следующие ошибки:

gsl-icc-1.15/lib/libgsl.so: undefined reference to `__intel_sse2_strcpy'
gsl-icc-1.15/lib/libgsl.so: undefined reference to `__intel_sse2_strchr'
gsl-icc-1.15/lib/libgsl.so: undefined reference to `__intel_sse2_strncpy'

Что может быть причиной этой ошибки? Является ли gsl несовместимым с компилятором Intel?


person amanda    schedule 04.06.2012    source источник


Ответы (3)


Что может быть причиной этой ошибки?

Вы не показали нам свою команду соединения, но мой хрустальный шар подсказал мне, что вы пытаетесь связать libgsl.so с ld (или, возможно, с gcc) вместо icc.

В общем, никогда не следует напрямую связывать что-либо с ld в UNIX. Всегда используйте соответствующий драйвер компилятора (в данном случае icc).

person Employed Russian    schedule 05.06.2012
comment
Я использовал icc для ссылки, я отредактировал свой вопрос, включив команду ссылки. - person amanda; 05.06.2012

Я также получаю такое же сообщение об ошибке при связывании некоторого кода с помощью gcc с версией PETSc, которая была скомпилирована с помощью icc. Более того, при использовании новейшего компилятора Intel 12.x для окончательного кода и компиляции PETSc с Intel 11.x возникает то же сообщение об ошибке, что и в Intel 12.x, использующем 11.x.

Так что проверьте, что mpicc действительно использует компилятор Intel 11.1.072. Проверьте наличие mpic++ -show и which icc.

person Thomas W.    schedule 07.06.2012

Возможно, среда Intel не установлена. Попробуйте следующую настройку среды:

source /etc/Intel_Compiler/10.0/XXXX/iccvars_intel64.sh
source /etc/Intel_Compiler/10.0/XXXX/ifortvars_intel64.sh

создайте папку в папке компилятора Intel. Настройка среды некоторых версий отличается, вы также можете попробовать:

source /etc/Intel_Compiler/10.0/XXXX/iccvars.sh intel64
source /etc/Intel_Compiler/10.0/XXXX/ifortvars.sh intel64

Надежда услужливо.

person Liang Zulin    schedule 21.08.2019