Проблема со связью с FreeMagic & GraphicsMagic - PullRequest
0 голосов
/ 21 сентября 2010

Всякий раз, когда я делаю ссылку на FreeMagic и GraphicsMagic, я получаю SIGABRT, как только запускается main, возможно, даже раньше.Любые идеи?

Недостаточно просто добавить флаги ссылки, но, например, добавить вызов 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 голосов
/ 25 сентября 2010

Проблема решена.Я добавил -fPIC к CFLAGS и что-то, что вы знаете, это работает.Очень интересно.Если бы кто-то мог объяснить, почему это так, было бы очень приятно.Затем вы получите мое согласие.

Если в ближайшее время не будет другого ответа, я приму свой собственный ответ.

0 голосов
/ 24 сентября 2010

Глядя на код для MHD_start_daemon_va () , кажется, что он вызовет abort() (через mhd_panic), если IFF pthread_mutex_lock() завершится неудачей.

Помогает ли перекомпоновка вашей программы с gcc -pthread ...?

...