Intel® C++ Compiler
Support and discussions for creating C++ code that runs on platforms based on Intel® processors.
Announcements
Welcome to the Intel Community. If you get an answer you like, please mark it as an Accepted Solution to help others. Thank you!
7568 Discussions

Problem with static variable and C++ object embedded in a dynamic library

sbnl1971
Beginner
109 Views


OS : Redhat 6.3
Compiler : icpc 13.0.1

Hi,

I've got some trouble with a static variable inside C++ object embedded in a dynamic library loaded by ltmm (plugin).

The C++ object inherits from a template class Singleton which use the static variable (private).


If I build my plugin with g++ 4.4.6, the compiler generate one instance of the static variable in .bss section with  flag bind "unique" (objdump).

If I build my plugin with icpc 13.0.1, the compiler generate several instance of the static variable in .data section with  flag bind "weak" (objdump).


How to obtain only one instance of a static variable with icpc in a shared library ?

Best regards,

0 Kudos
2 Replies
SergeyKostrov
Valued Contributor II
109 Views
>>...If I build my plugin with icpc 13.0.1, the compiler generate several instance of the static variable in .data section >>with flag bind "weak" (objdump). >> >>How to obtain only one instance of a static variable with icpc in a shared library ? Please post a piece of code which demonstrates how the static variable is declared, initialized and used in a test case. Thanks.
sbnl1971
Beginner
109 Views

Hi,

I extracted a piece of code and add a makefile to use it.

In "informations.txt" , you can see that the objects sbr::Singleton<sbr::Object1>::_instance and sbr::Singleton<sbr::Object2>::_instance don't have the same bind flag. I don't known how to get an unique instance for this objects with the icpc compiler. How do I declare  _instance to get  a behavior like GNU compiler ?

Regards,

Reply