A simple linking problem

A simple linking problem

Hi,I was compiling my first Fortran program under Ubuntu, and got a compiler linking error:/opt/intel/composer_xe_2011_sp1.7.256/compiler/lib/intel64/libifcore.so.5: undefined reference to `__intel_sse2_strchr'which library shall I link to solve this problem ?I've explicitly asked ifort to link with ifcore by: ifort -lifcoreThank you and Appreciate your help !!!Haining

4 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

This function should be defined in libirc, as it is in my Intel64 installation of this compiler.
The specification -lirc ought to be included automatically if you use ifort/icc/icpc to drive the link. You could check that by setting the additional option -# for your link step.
If you are not using an Intel compiler to drive the link step, you will need to add -lirc or equivalent.
If the ifort installation didn't automatically provide libirc.a and libirc.so, that would appear to be an installer bug. As I installed both ifort and icc for Intel64, I don't know whether both installers provide it.

It seems the library libirc has strrchr, but not strchr:

nm /state/partition1/apps/intel/composerxe-2011.3.174/compiler/lib/intel64/libirc.so | grep intel_sse2
00000000000101d0 T __intel_sse2_stpcpy
0000000000010420 T __intel_sse2_stpncpy
000000000001d7d0 T __intel_sse2_strcat
000000000001a4d0 T __intel_sse2_strcpy
000000000001c560 T __intel_sse2_strcspn
000000000001dec0 T __intel_sse2_strdup
000000000001a7f0 T __intel_sse2_strend
000000000001b660 T __intel_sse2_stricmp
000000000001a740 T __intel_sse2_strlen
000000000001ae40 T __intel_sse2_strlwr
000000000001dac0 T __intel_sse2_strncat
000000000001a830 T __intel_sse2_strncmp
000000000001cc70 T __intel_sse2_strncpy
000000000001b970 T __intel_sse2_strnicmp
000000000001d050 T __intel_sse2_strnlen
000000000001d570 T __intel_sse2_strnset
000000000001e190 T __intel_sse2_strpbrk
000000000001cf90 T __intel_sse2_strrchr
000000000001d0d0 T __intel_sse2_strrev
000000000001d380 T __intel_sse2_strset
000000000001be10 T __intel_sse2_strspn
000000000001e8b0 T __intel_sse2_strtok
000000000001b250 T __intel_sse2_strupr

Note that the library you showed the contents for is considerably older than the compiler you're using. In particular, it's from the 12.0 compiler but you compiled with 12.1. You should use the "source" command to make the proper set of binaries and libraries visible to your build environment.

Steve

Login to leave a comment.