Using thread_local on C++ throws error

Using thread_local on C++ throws error

I have been trying to convert a C++ MPI code into OpenMP. There are large number of static member variables (mostly dynamic lists of class objects), and i am trying to use 'thread_local' to make sure there are no conflicts. But the file does not compile and threw error: "error: expected a ";"". I was using ICC 14. 

When i tried to use ICC 15 beta version, the particular file where i used thread_local compiled, but the compilation of the whole application failed at some other point: "undefined reference to '__cxa_thread_atexit'".

Would greatly appreciate help in solving this issue.


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

have you added -std=c++0x option?

and what is gcc version?


Yes, i was using -std=c++0x, also tried -std=c++11.

gcc version is 4.4.7


and you have added -lstdc++ option to the linker, right?

i hadn't put the -lstdc++ option. Its compiling now with it.

Thanks a lot.

Unfortunately, the thread_local issue is not yet resolved. I was able to get it compiled once, but when i did a clean build of the whole application, the problem 'undefined reference to __cxa_thread_atexit' is still there. 

 Using the latest gcc (4.9.0) removes the above error but throws another error: 'error: identifier "__builtin_ia32_vfmaddss" is undefined'. (I used -cxxlib flag in icpc for providing the latest gcc path).

Leave a Comment

Please sign in to add a comment. Not a member? Join today