mercredi 4 novembre 2015

C++11: sigset not found

This error only happens to me with Solaris 11 and Oracle Solaris Studio 12.4, and only if I add the -std=c++11 flag.

I'm trying to link two .o files to create an executable.
One of the files uses sigset from <signal.h>.
It works without the -std=c++11 flag.

But when I add it, I get the following error:

Undefined                       first referenced
symbol                             in file
sigset                           whatever.o
ld: fatal: symbol referencing errors

I've tried everything .. adding the flags -lstdc++ -lgcc_s -lCrunG3 -lc didn't help either ..

sigset appers to be defined:

nm /usr/lib//libc.so | grep sigset
[527]   |    883372|       224|FUNC |LOCL |2    |16     |__csigsetjmp
[5694]  |    736724|       420|FUNC |WEAK |3    |16     |_sigset
[6599]  |    883868|        28|FUNC |GLOB |3    |16     |_sigsetjmp
[4906]  |    833680|       532|FUNC |WEAK |3    |16     |_thr_sigsetmask
[6267]  |    736724|       420|FUNC |GLOB |3    |16     |sigset
[4590]  |    883868|        28|FUNC |GLOB |3    |16     |sigsetjmp
[2244]  |         0|         0|FILE |LOCL |0    |ABS    |sigsetops.c
[4502]  |    833680|       532|FUNC |GLOB |3    |16     |thr_sigsetmask

As far as I know, using -std=c++11 will use the g++ ABI. Maybe something's messed up with the installation?

http://ift.tt/1SowNZu

Aucun commentaire:

Enregistrer un commentaire