Hello,
I was installing a program with MPI and got the following message:
mpicc -O3 -fomit-frame-pointer -finline-functions -Wall -Wno-unused -malign-double -funroll-all-loops -o mdrun glaasje.o gctio.o init_sh.o ionize.o do_gct.o relax_sh.o repl_ex.o xutils.o compute_io.o md.o mdrun.o genalg.o ../mdlib/.libs/libmd_mpi.a -L/usr/lib64 ../gmxlib/.libs/libgmx_mpi.a -lnsl -lfftw3f -lm /usr/lib64/libSM.so -lICE /usr/lib64/libX11.so /usr/lib64/libxcb-xlib.so /usr/lib64/libxcb.so -lXau -ldl
/usr/local/lib/libfftw3f.a(rdft2-pad.o): In function `fftwf_rdft2_pad':
rdft2-pad.c:(.text+0x5b): undefined reference to `_intel_fast_memcpy'
/usr/local/lib/libfftw3f.a(rank0.o): In function `apply_io1':
rank0.c:(.text+0x9f): undefined reference to `_intel_fast_memcpy'
rank0.c:(.text+0xad): undefined reference to `_intel_fast_memcpy'
/usr/local/lib/libfftw3f.a(rank0.o): In function `apply_io2r':
rank0.c:(.text+0xf7): undefined reference to `_intel_fast_memcpy'
/usr/local/lib/libfftw3f.a(rank0.o): In function `apply_io2i':
rank0.c:(.text+0x15f): undefined reference to `_intel_fast_memcpy'
/usr/local/lib/libfftw3f.a(rank0.o):rank0.c:(.text+0xfc): more undefined references to `_intel_fast_memcpy' follow
collect2: ld returned 1 exit status
As I got it Intel C++ Compiler uses two routines _intel_fast_memcpy and _intel_fast_memset to perform memcpy and memset operations that are not macro expanded to __builtin_memcpy and __builtin_memset in the source code. These are found in libirc. If you use the gcc compiler to link your application or if you directly call the linker, ld, you might find these unresolved symbols. For this reason, Intel recomends using the Intel C++ Compiler for linking, using the same compiler options used during the compilation phase.
The question is HOW TO SET ICC TO BE THE LINKER ?
Thanks.