考虑以下示例:
CLRegion
#include <signal.h>
extern "C" {
static void signalHandler(int signal) {}
}
int main(int, char**)
{
sigset (SIGTERM, signalHandler);
return 0;
}
成功。
但是
CC test.cpp
我也尝试了以下内容:
CC test.cpp -std=c++11
Undefined first referenced
symbol in file
sigset test.o
ld: fatal: symbol referencing errors
但产生同样的错误。 CC test.cpp -std=c++11 -lstdc++ -lgcc_s -lc
也无济于事。
也不 - -m64
。
操作系统:Solaris 11 编译器:来自Oracle Solaris Studio 12.4的CC
要求输出:
lstdc++ -lgcc_s -lCrunG3
如果我使用me@myhost:~/projects/cpptest> CC -std=c++11 -c test.cpp -o test.o
me@myhost:~/projects/cpptest> nm -A test.o | grep sigset
test.o: [14] | 0| 0|FUNC |GLOB |0 |UNDEF |_Z6sigset
me@myhost:~/projects/cpptest> nm -A /usr/lib/libc.so | grep sigset
/usr/lib/libc.so: [527] | 883372| 224|FUNC |LOCL |2 |16 |__csigsetjmp
/usr/lib/libc.so: [5694] | 736724| 420|FUNC |WEAK |3 |16 |_sigset
/usr/lib/libc.so: [6599] | 883868| 28|FUNC |GLOB |3 |16 |_sigsetjmp
/usr/lib/libc.so: [4906] | 833680| 532|FUNC |WEAK |3 |16 |_thr_sigsetmask
/usr/lib/libc.so: [6267] | 736724| 420|FUNC |GLOB |3 |16 |sigset
/usr/lib/libc.so: [4590] | 883868| 28|FUNC |GLOB |3 |16 |sigsetjmp
/usr/lib/libc.so: [2244] | 0| 0|FILE |LOCL |0 |ABS |sigsetops.c
/usr/lib/libc.so: [4502] | 833680| 532|FUNC |GLOB |3 |16 |thr_sigsetmask
me@myhost:~/projects/cpptest>
代替<csignal>
,则会收到以下错误:
<signal.h>