每当我链接FreeMagic& GraphicsMagic,我在主要启动后立即获得SIGABRT,甚至可能在此之前。有什么想法吗?
仅添加链接标志是不够的,但是例如将调用添加到FreeImage_Initialise(FALSE); main()中的某个地方使程序死于SIGABRT。
Stacktrace崩溃的地方:
#0 0x00007ffff6c47a75 in *__GI_raise (sig=<value optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1 0x00007ffff6c4b5c0 in *__GI_abort () at abort.c:92
#2 0x00007ffff73f41d1 in MHD_start_daemon_va () from /usr/lib/libmicrohttpd.so.5
#3 0x00007ffff73f481f in MHD_start_daemon () from /usr/lib/libmicrohttpd.so.5
#4 0x00000000004036f2 in main (argc=1, argv=0x7fffffffec98) at pasar.c:769
每当我尝试调用MDH_start_daemon()时都会发生。
当我链接到另一个时,同样的事情也发生了,据我所知,图像库,AfterImage无关。
将-pthread添加到LDFLAGS和CFLAGS没有任何区别。
答案 0 :(得分:0)
查看MHD_start_daemon_va()的代码,它似乎会调用abort()
(通过mhd_panic
)IFF pthread_mutex_lock()
失败。
是否使用gcc -pthread ...
帮助重新链接您的程序?
答案 1 :(得分:0)
问题解决了。我将-fPIC添加到CFLAGS,你知道什么,它的工作原理。很有意思。如果有人可以解释为什么会这样,那将是非常好的。然后你会得到我的接受。
如果很快没有其他答案,我会接受我自己的答案。