2010-09-21 84 views
0

每当我链接FreeMagic & GraphicsMagic时,我会在主开始时立即得到一个SIGABRT,甚至可能在之前。有任何想法吗?FreeMagic与GraphicsMagic链接问题

仅添加链接标志是不够的,但例如将调用添加到FreeImage_Initialise(FALSE); main()中的某处使程序死于SIGABRT。

堆栈跟踪从它崩溃了:

#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。

添加-thread到LDFLAGS和CFLAGS没有区别。

+0

在GDB下运行你的程序。当程序获得SIGABRT时,GDB将停止。此时,执行'where'命令,这会给你崩溃堆栈跟踪。修改您的问题以包含堆栈跟踪 - 这对回答您的问题至关重要。 – 2010-09-23 03:12:23

+0

@就业,谢谢! – 2010-09-23 07:51:18

回答

0

问题已解决。我向CFLAGS添加了-fPIC,并且您知道该怎么办,它的工作原理。很有意思。如果有人能解释这是为什么,那会很好。你会接受我的接受。

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

0

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

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

+0

有趣,但没有。没有不同。 – 2010-09-24 12:16:09