there is a way to avoid strict libraries linking?
Dan Nelson
dnelson at allantgroup.com
Wed Apr 14 17:48:55 UTC 2010
In the last episode (Apr 14), Leinier Cruz Salfran said:
> i want to know if there is a possibility to avoid current strict libraries
> linking .. i will explain myself
>
> for example .. i have installed 'gtk' (2.18) that depends on library
> 'libpng.so.5' (png) .. and i will upgrade 'png' port to a superior
> version that install the library 'libpng.so.6' BUUUTTTT 'gtk' will not be
> upgraded, so it will still depending on 'libpng.so.5' .. so here is my
> question: there is a way to avoid this?????? i means that 'gtk' load
> 'libpng.so' (that is a symbolic link to 'libpng.so.6') instead of
> 'libpng.so.5' at runtime
The whole reason for a library version bump is because the libraries are not
compatible with each other, usually due to a function being removed or its
argument list changing, or a structure changing size. Symlinking one
version onto another version might work, but only if the application doesn't
use any of the removed or changed functions.
http://article.gmane.org/gmane.comp.graphics.png.devel/3283
It's much safer to just leave the libraries alone. Just because you
upgraded libpng doesn't mean that your old gtk binary will stop working
(assuming you are using "portupgrade" or "portmaster -w" which preserves old
libraries of course). Anyway, the FreeBSD port maintainers usually bump the
revision of dependant ports when a major library like libpng gets upgraded,
to force everyone to upgrade anything that depends on it.
> i think this is a VERY VERY strict rule because in linux programs load
> 'lib*.so' instead 'lib*.so.#' except if that program was linked to
> 'lib*.so.#' at compilation time
no, the rule is the same in Linux. Programs load "lib*.so.#" there also:
(dan at linuxbox) ~># ldd /usr/bin/rrdtool
linux-vdso.so.1 => (0x00007fff4f9ff000)
librrd.so.2 => /usr/lib64/librrd.so.2 (0x00007fa047716000)
libfreetype.so.6 => /usr/lib64/libfreetype.so.6 (0x00007fa04759b000)
libpng.so.3 => /usr/lib64/libpng.so.3 (0x00007fa04745f000)
libz.so.1 => /lib64/libz.so.1 (0x00007fa04734b000)
libart_lgpl_2.so.2 => /usr/lib64/libart_lgpl_2.so.2 (0x00007fa047234000)
libm.so.6 => /lib64/libm.so.6 (0x00007fa0470df000)
libc.so.6 => /lib64/libc.so.6 (0x00007fa046e9f000)
/lib64/ld-linux-x86-64.so.2 (0x00007fa04785e000)
--
Dan Nelson
dnelson at allantgroup.com
More information about the freebsd-hackers
mailing list