2

私のプログラムは 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 コンパイラと互換性がありませんか?

4

3 に答える 3

1

icc でコンパイルされた PETSc バージョンに対して gcc を使用して一部のコードをリンクすると、同じエラー メッセージが表示されます。さらに、最新の Intel 12.x コンパイラを最終コードに使用し、Intel 11.x で PETSc をコンパイルすると、Intel 12.x が 11.x を使用する場合と同じエラー メッセージが表示されます。

mpicc が実際に Intel 11.1.072 コンパイラを使用していることを確認してください。と を確認しmpic++ -showますwhich icc

于 2012-06-07T07:52:45.690 に答える
1

このエラーの原因は何ですか?

リンク コマンドは表示されませんでしたが、私のクリスタル ボールは、 ではなくlibgsl.sold(またはおそらく とgcc)リンクしようとしていることを示していますicc

ld一般に、 UNIX では何も直接リンクしないでください。常に適切なコンパイラ ドライバを使用します (iccこの場合)。

于 2012-06-05T04:53:20.523 に答える