Бинарный файл был связан с gcc с помощью:
gcc notion.o -Wl,-whole-archive ../ioncore/ioncore.a
-Wl,-no-whole-archive -L/usr/X11R6/lib -lX11 -lXext -lSM -lICE
-Wl,-whole-archive -L../libmainloop -lmainloop -lextl -ltu
-Wl,-no-whole-archive
pkg-config --libs lua5.1
-ldl -lm -lrt -Xlinker --export-dynamic -o понятие
Связывание выполнено успешно, однако при запуске приложения пользователь сообщает о сбое из-за неопределенного символа (XShapeCombineRectangles
). XShapeCombineRectangles
должен быть доступен в libXext.
Действительно, проверка с помощью ldd, Xext не указана как зависимость разделяемой библиотеки для этого пользователя:
linux-gate.so.1 => (0x0068f000) libX11.so.6 => /usr/lib/i386-linux-gnu/libX11.so.6 (0x00ec7000) liblua5.1.so.0 => /usr/lib/i386-linux-gnu/liblua5.1.so.0 (0x00226000) libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0x005da000) libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0x005e1000) librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0x0032c000) libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x00335000) libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0x007d6000) /lib/ld-linux.so.2 (0x00882000) libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0x006dc000) libXau.so.6 => /usr/lib/i386-linux-gnu/libXau.so.6 (0x00110000) libXdmcp.so.6 => /usr/lib/i386-linux-gnu/libXdmcp.so.6 (0x00dd8000)
Когда я сам компилирую приложение, ldd показывает libXext и действительно не дает сбоев.
Что здесь может происходить?
(Дополнительный контекст: об этой ошибке было сообщено на http://sourceforge.net/tracker/?func=detail&aid=3427206&group_id=314802&atid=1324528)
-Wl,-y,XShapeCombineRectangles
показывает/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/libXext.so
, поэтому я бы сказал, что это динамическое связывание, верно? - person Arnout Engelen   schedule 23.10.2011