Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

A simple linking problem

Haining_Wang
Beginner
1,464 Views
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 -lifcore
Thank you and Appreciate your help !!!
Haining
0 Kudos
3 Replies
TimP
Honored Contributor III
1,464 Views
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.
0 Kudos
Ron_Cohen
Beginner
1,464 Views
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
0 Kudos
Steven_L_Intel1
Employee
1,464 Views
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.
0 Kudos
Reply