/opt/intel_cc_80/lib/libcprts.so.5 problems...

/opt/intel_cc_80/lib/libcprts.so.5 problems...

chijacky's picture

Sorry, I did not attach the full version of gdb output on my previous email. It appears the problem is somewhat related to the libcprts.so.5 Intel file


Just in case, I have used Intel compiler icc (version 8.0) and compiled a program on RH8.0. While running the program I get "Segmentation violation". This program runs fine if I compile it with gnu compilers.





39% gdb Test
GNU gdb Red Hat Linux (5.2.1-4)
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux"...
(gdb) break atexit
(gdb) run
Starting program: [New Thread 8192 (LWP 7785)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 8192 (LWP 7785)]
0x41501799 in std::ctype const& std::use_facet >(std::locale const&) (__loc=@0x7)
at ../../../../libstdc++-v3/src/locale.cc:522
522 ../../../../libstdc++-v3/src/locale.cc: No such file or directory.
in ../../../../libstdc++-v3/src/locale.cc
(gdb) where
#0 0x41501799 in std::ctype const& std::use_facet >(std::locale const&) (__loc=@0x7)
at ../../../../libstdc++-v3/src/locale.cc:522
#1 0x40b4e7ef in __sti__$E () from /opt/intel_cc_80/lib/libcprts.so.5
#2 0x40b77e07 in __icrt_do_global_construction () from /opt/intel_cc_80/lib/libcprts.so.5
#3 0x40b77e30 in __icrt_init () from /opt/intel_cc_80/lib/libcprts.so.5
#4 0x40b326ca in _init () from /opt/intel_cc_80/lib/libcprts.so.5
#5 0x4000a7a2 in _dl_init_internal () from /lib/ld-linux.so.2



Best Regards,
2 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.
John O (Intel)'s picture


Hi,
The problem is that you are mixing code that was compiled with the g++ C++ libraries & the Intel provided C++ libraries. In order to build an application using parts that were compiled using g++ and the Intel compiler, you need to use the Intel compiler with the -cxxlib-gcc option. This is the default in the 8.1 release for systems that have supported g++ versions: 3.2, 3.3 & 3.4.

Quickly, the reason for this is that inorder to be binary compatible, you need to use the identical C++ include files & libraries. Otherwise,their are C++ library implementation details that are different in the different libraries & will lead to problems such as you encountered.

We have a white paper discussing this in detail at
http://www.intel.com/software/products/compilers/techtopics/LinuxCompilersCompatibility.htm

Regards,
John O'Neill

Login to leave a comment.