[devel] linkage_problems abiword unjoined
Alexey Tourbin
at на altlinux.ru
Вт Июл 13 08:07:06 UTC 2010
On Tue, Jul 13, 2010 at 12:19:14AM +0400, Alexey Tourbin wrote:
> Ну вот например показывает что libabiword-2.8 недолинкован с libX11.
>
> [at на people at]$ fgrep libabiword-2.8 unjoined
> abiword /usr/lib64/libabiword-2.8.so U XFreeModifiermap
> abiword /usr/lib64/libabiword-2.8.so U XGetModifierMapping
> abiword /usr/lib64/libabiword-2.8.so U XKeycodeToKeysym
> abiword /usr/lib64/libabiword-2.8.so U XKeysymToKeycode
> abiword /usr/lib64/libabiword-2.8.so U XParseGeometry
> abiword-light /usr/lib64/libabiword-2.8.so U XFreeModifiermap
> abiword-light /usr/lib64/libabiword-2.8.so U XGetModifierMapping
> abiword-light /usr/lib64/libabiword-2.8.so U XKeycodeToKeysym
> abiword-light /usr/lib64/libabiword-2.8.so U XKeysymToKeycode
> abiword-light /usr/lib64/libabiword-2.8.so U XParseGeometry
> [at на people at]$ rpm -qpR /ALT/Sisyphus/files/x86_64/RPMS/abiword-2.8.4-alt1.x86_64.rpm |grep libX
> [at на people at]$
>
> Как могло получиться, что abiword недолинкован с libX11?
> У нас же и в binutils подержка есть "подцепить недостающие библиотеки",
> и pkg-config для линковки рекурсивно раскрывает список Libs.
В ld/bfd что-то не так работает.
libtool: link: i586-alt-linux-g++ -pipe -Wall -O2 -march=i586 -mtune=i686 --no-undefined -o .libs/abiword abiword-UnixMain.o -pthread -Wl,--export-dynamic ./.libs/libabiword-2.8.so -lfribidi -lwv -lgsf-1 -lxml2 -lpng -lenchant -lgoffice-0.8 -lz -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangocairo-1.0 -lpangoft2-1.0 -lpango-1.0 -lfreetype -lfontconfig -lrsvg-2 -lm -lgdk_pixbuf-2.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 -ljpeg -pthread
http://git.altlinux.org/beehive/logs/Sisyphus-i586/latest/success/abiword-2.8.4-alt1
(зависимость на libX11 не появляется)
Он линкуется с -lgtk-x11-2.0, которая в свою очередь содержит DT_NEEDED
libX11.so.6. Тогда согласно документации в ld(1), в режиме --copy-dt-needed-entries
он должен просто скопировать DT_NEEDED libX11.so.6 в libabiword-2.8.so!
Предварительно проверив (в режиме --as-needed), что библиотека
libX11.so.6 разрешает какие-то символы (и мы видим, что она разрешает).
В ld(1) вообще говорится "recursively searched". Так что мой пример,
когда libX11.so.6 должна подцепиться через -lgtk-x11-2.0 сразу же, -
это перестраховка.
With the default setting dynamic libraries mentioned on the
command line will be recursively searched, following their
DT_NEEDED tags to other libraries, in order to resolve symbols
required by the output binary.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : отсутствует
Тип : application/pgp-signature
Размер : 198 байтов
Описание: отсутствует
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20100713/bea42a7c/attachment-0001.bin>
Подробная информация о списке рассылки Devel