[Comm] symbol png_create_read_struct, version PNG12_0 not defined in file libpng12.so.0 with link time reference

Denis G. Samsonenko =?iso-8859-1?q?d=2Eg=2Esamsonenko_=CE=C1_gmail=2Ecom?=
Вс Окт 5 08:07:20 MSD 2008


День добрый!

5 октября 2008 г. 8:13 Alexey Borovskoy написал:
>> Вот и хочется прояснить для себя, почему на одних и тех же
>> версиях библиотек, но от разных вендоров проявляется такое
>> поведение, что в одном случае прога запускается, а в другом
>> нет. Это какие-то особенности альтовской сборки?
>
> ldd закрытый_бинарник

$ ldd VESTA
        linux-gate.so.1 =>  (0xffffe000)
        libGL.so.1 => /usr/lib/libGL.so.1 (0xb7f22000)
        libGLU.so.1 => /usr/lib/libGLU.so.1 (0xb7ea0000)
        libgtk-x11-2.0.so.0 => /usr/lib/libgtk-x11-2.0.so.0 (0xb7aee000)
        libgdk-x11-2.0.so.0 => /usr/lib/libgdk-x11-2.0.so.0 (0xb7a5b000)
        libgdk_pixbuf-2.0.so.0 => /usr/lib/libgdk_pixbuf-2.0.so.0 (0xb7a41000)
        libpango-1.0.so.0 => /usr/lib/libpango-1.0.so.0 (0xb7a07000)
        libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0xb79ce000)
        libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0xb79ca000)
        libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb790f000)
        libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0xb790c000)
        libXxf86vm.so.1 => /usr/lib/libXxf86vm.so.1 (0xb7906000)
        libSM.so.6 => /usr/lib/libSM.so.6 (0xb78fe000)
        libpng12.so.0 => /usr/lib/libpng12.so.0 (0xb78da000)
        libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0xb78bb000)
        libtiff.so.3 => /usr/local/lib/libtiff.so.3 (0xb7877000)
        libz.so.1 => /lib/libz.so.1 (0xb7863000)
        libdl.so.2 => /lib/libdl.so.2 (0xb785e000)
        libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0xb77a4000)
        libm.so.6 => /lib/libm.so.6 (0xb777e000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7773000)
        libpthread.so.0 => /lib/libpthread.so.0 (0xb775d000)
        libc.so.6 => /lib/libc.so.6 (0xb7637000)
        libX11.so.6 => /usr/lib/libX11.so.6 (0xb7548000)
        libGLcore.so.1 => /usr/lib/libGLcore.so.1 (0xb6bb0000)
        libnvidia-tls.so.1 => /usr/lib/libnvidia-tls.so.1 (0xb6bae000)
        libXext.so.6 => /usr/lib/libXext.so.6 (0xb6ba0000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb6aba000)
        libpangocairo-1.0.so.0 => /usr/lib/libpangocairo-1.0.so.0 (0xb6ab1000)
        libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0xb6aac000)
        libatk-1.0.so.0 => /usr/lib/libatk-1.0.so.0 (0xb6a92000)
        libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0xb6a8f000)
        libcairo.so.2 => /usr/lib/libcairo.so.2 (0xb6a17000)
        libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0xb69eb000)
        libXrender.so.1 => /usr/lib/libXrender.so.1 (0xb69e3000)
        libXi.so.6 => /usr/lib/libXi.so.6 (0xb69db000)
        libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0xb69d5000)
        libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0xb69cc000)
        librt.so.1 => /lib/librt.so.1 (0xb69c3000)
        libICE.so.6 => /usr/lib/libICE.so.6 (0xb69ac000)
        /lib/ld-linux.so.2 (0x80000000)
        libXau.so.6 => /usr/lib/libXau.so.6 (0xb69a9000)
        libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb69a4000)
        libpangoft2-1.0.so.0 => /usr/lib/libpangoft2-1.0.so.0 (0xb697a000)
        libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xb68ff000)
        libdirectfb-0.9.so.25 => /usr/lib/libdirectfb-0.9.so.25 (0xb68b0000)
        libdirect-0.9.so.25 => /usr/lib/libdirect-0.9.so.25 (0xb68a2000)
        libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb6882000)
        libfusion-0.9.so.25 => /usr/lib/libfusion-0.9.so.25 (0xb687c000)


Вообще это не первый случай, когда какая-нибудь прога не из
репозитария не хочет работать с альтовским libpng12. Например, oolite,
поставленный из oolite-1.71.2.x86.package ругается так:

 ./oolite: relocation error: ./oolite: symbol png_create_read_struct,
version PNG12_0 not defined in file libpng12.so.0 with link time
reference

После того, как смог запустить таки VESTA, понял, как запустить
oolite. В ~/.local/lib/Oolite/oolite-deps/lib лежит
libpng12.so.0.29.0, а ссылки на него libpng12.so.0 нету, вот он и
цепляет системный libpng12, с которым работать отказывается.

Сейчас уже не вспомню, но были у меня и другие похожие случаи отказа
работать скаченных из И-нета прог с альтовской libong12.

Я не хочу сказать, что в альте плохо собирают libong12, просто мне
интересно, в чём конкретно разница, что приводит к отторжению этой
либы сторонними бинарниками, в то время как из федоры, например, эта
же либа той же версии нормально принимается данным бинарником. Что это
за магическое "version PNG12_0", встающее камнем предкновения?

-- 
Всего доброго,

Денис.


Подробная информация о списке рассылки community