将问题与FreeMagic& GraphicsMagick工具

时间:2010-09-21 14:05:23

标签: c linux graphics 64-bit linker

每当我链接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没有任何区别。

2 个答案:

答案 0 :(得分:0)

查看MHD_start_daemon_va()的代码,它似乎会调用abort()(通过mhd_panic)IFF pthread_mutex_lock()失败。

是否使用gcc -pthread ...帮助重新链接您的程序?

答案 1 :(得分:0)

问题解决了。我将-fPIC添加到CFLAGS,你知道什么,它的工作原理。很有意思。如果有人可以解释为什么会这样,那将是非常好的。然后你会得到我的接受。

如果很快没有其他答案,我会接受我自己的答案。