Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
Announcements
FPGA community forums and blogs on community.intel.com are migrating to the new Altera Community and are read-only. For urgent support needs during this transition, please visit the FPGA Design Resources page or contact an Altera Authorized Distributor.
29282 Discussions

Debian Linux x86 and ATAN EXP ISNAN fuctions (missing symbol)

davydden
Beginner
823 Views
Dear support,

I have the following problem:
I complie FORTRAN code which is a part of libadusr.so for FE sowatware ADINA
under Linux x86 Debian (Adina support only ifort compiler under linux)
However when I run exe file I have the following error:

denis@perun10:/usr/adina85/adina8.5$ ./adina.exe
./adina.exe: symbol lookup error: /lib/libadusr.so: undefined symbol: __libm_sse 2_exp

I should say that before I had the same problems with ATAN function and ISNAN which I
commented for a moment.
In FAQ of Adina they suggest that it is due to missing libraries which should be added during compilation:
http://www.adina.com/faq/qg008.shtml

However I don't find any libraries which have missimng symbol:
denis@prometheus:/opt/intel/Compiler/11.0/081/lib$ grep "__libm_sse2_exp" *

nor here:
denis@prometheus:/opt/intel/Compiler/11.0/081/bin/ia32$ grep "__libm_sse2_exp" *
Binary file fortcom matches
Binary file svfortcom matches

I would appreciate very much any help to be able to compile this library.

With the best regards,
PhD student
Denis Davydov
0 Kudos
4 Replies
Kevin_D_Intel
Employee
823 Views


You were very close. The library directory structure changed under 11.0. You needed to execute the grep under the ia32 specific library sub-directory, the full path to the x86 version is: /opt/intel/Compiler/11.0/081/lib/ia32

That would have showed you:

$ grep "__libm_sse2_exp" *
Binary file libimf.a matches
Binary file libimf.so matches

libimf is the library you need. You should initially just add -limf to the link command-line and allow other linker defaults or existing linker options to determine if the static or dynamic form of the library is used.

These ATAN (__libm_sse2_atan) and ISNAN (__libm_internal_isnan) references also come from libimf so you should be able to reactivate those after adding libimf.

0 Kudos
davydden
Beginner
823 Views
Thank you very much for you reply.
I added missing library and problems with atan, isnan and exp have gone.
However there were two more missing I added (for_stop_core symbol).
Now I have the following error:

denis@perun10:/usr/adina85/adina8.5$ ./adina.exe
./adina.exe: error while loading shared libraries: libifcoremt.so.5: cannot open shared object file: No such file or directory

whereas these files are exactly in the same directory:
denis@perun10:/usr/adina85/adina8.5$ ls
adina.exe
libadusr.so
libguide.so
libifcoremt.so.5
libifcore.so.5
...


Do you have any clue why it does not see them?

Thank you in advance.
Regards,
Denis

p/s/ here is my makefile, just for any case:

SHELL = /bin/sh
TARGET = libadusr.so
MAT2D_OBJ = ovl30u_vp1.o
MAT3D_OBJ = ovl40u_vp1.o
USER_OBJS =
OBJS =
ovl100u.o ovl110u.o ovl170u.o ovl20u.o
ovl30u.o ovl40u.o ovl50u.o ovl60u.o ovl160u.o ovlusr.o
$(MAT2D_OBJ) $(MAT3D_OBJ) $(USER_OBJS)
FC = /opt/intel/Compiler/11.0/081/bin/ia32/ifort
LD = ld
FFLAGS = -auto -common_args -Kpic -cm -w -O3 -assume byterecl -fp_port
INTEL_LIB=/opt/intel/Compiler/11.0/081/lib/ia32

$(TARGET): $(OBJS) force_rebuild
@ rm -f $@ 2 > /dev/null
$(LD) -o $@ -Bdynamic /lib/ld-linux.so.2
$(INTEL_LIB)/libimf.so $(INTEL_LIB)/libifcoremt.so.5 $(INTEL_LIB)/libifcore.so.5
-shared $(OBJS) -lm -lc
@ chmod 555 $@

force_rebuild:
0 Kudos
Kevin_D_Intel
Employee
823 Views

That's a run-time issue related to the LD_LIBRARY_PATH setting.

Assuming those ifort libraries you show that exist in the adina directory are from the 11.0 Intelcompiler release, to use those, then use this command to set the environment variable accordingly:

export LD_LIBRARY_PATH=/usr/adina85/adina8.5:$LD_LIBRARY_PATH

If those ifort libraries in the adina directory are *not* from the 11.0 release, then you should set LD_LIBRARY_PATH to use the lib versions under the Intel ia32 library sub-directory. You can either set LD_LIBRARY_PATH manually or source the ifortvars.sh script under the bin sub-directory. (e.g. source /opt/intel/Compiler/11.0/081/bin/ifortvars.sh ia32)

Set manually with: export LD_LIBRARY_PATH=/opt/intel/Compiler/11.0/081/lib/ia32:$LD_LIBRARY_PATH


0 Kudos
davydden
Beginner
823 Views
Thank you!
now everything works and I'm able to run .exe file with no compiling-issue errors.

Cheers,
Denis.
0 Kudos
Reply