代码之家  ›  专栏  ›  技术社区  ›  Prof. Falken

将问题与FreeMagic和GraphicsMagic联系起来

  •  0
  • Prof. Falken  · 技术社区  · 14 年前

    每当我链接到FreeMagic和GraphicsMagic中的任何一个,我都会在main启动时得到一个SIGABRT,甚至可能在启动之前。有什么想法吗?

    仅仅添加链接标志是不够的,例如添加对FreeImage\u 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\u start\u daemon()时,总是会发生这种情况。

    同样的事情也发生了,当我链接到另一个,据我所知,不相关的,图像库,后像。

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

    2 回复  |  直到 14 年前
        1
  •  0
  •   Employed Russian    14 年前

    查看的代码 MHD_start_daemon_va() ,似乎它将调用 abort() mhd_panic )敌我识别 pthread_mutex_lock() 失败。

    重新链接你的程序 gcc -pthread ... 救命啊?

        2
  •  0
  •   Prof. Falken    14 年前

    问题解决了。我在CFLAGS中添加了-fPIC,你知道吗,它是有效的。非常有趣。如果有人能解释为什么会这样,那就太好了。你会得到我的接受。