question about libpng in recent X11 packages
I noticed that recent X11 development releases include both libpng12 and libpng14 in /usr/X11/lib. I think these are conflicting. I was having some difficulties compiling some open source apps, and in debugging, found that I had to completely prune out libpng12 from there. libpng14 is backward-compatible with 12, it is hard for me to understand why there is a reason for both to be present. On my system, the following changes improved compiler compatibility: cd /usr/X11/lib sudo rm libpng.3* libpng12* libpng.la sudo ln -s libpng14.la libpng.la Comments? Dave
On Oct 21, 2010, at 17:32, Dave Ray wrote:
I noticed that recent X11 development releases include both libpng12 and libpng14 in /usr/X11/lib.
On Leopard, yes... in /opt/X11/lib on Snow Leopard.
I think these are conflicting. I was having some difficulties compiling some open source apps, and in debugging, found that I had to completely prune out libpng12 from there.
libpng14 is backward-compatible with 12
No. It is *source* compatible, but not *binary* compatible.
, it is hard for me to understand why there is a reason for both to be present.
For binary compatibility.
On my system, the following changes improved compiler compatibility:
cd /usr/X11/lib sudo rm libpng.3* libpng12* libpng.la
That's just going to break stuff.
sudo ln -s libpng14.la libpng.la
libpng14.la and libpng.la should've been the same anyway. Yeah, they're not symlinked, but they have the same contents.
Comments?
Yeah, you may have solved a small bug in the package you are building by breaking many other things... libpng-1.2 and 1.4 are completely isolated from one another and co- exist. libpng-1.4 is preferred (ie, it is used when just "png" is requested without an explicit version): $ export PKG_CONFIG_PATH="/usr/X11/lib/pkgconfig" $ pkg-config --libs --cflags libpng12.pc -I/usr/X11/include/libpng12 -L/usr/X11/lib -lpng12 $ pkg-config --libs --cflags libpng14.pc -I/usr/X11/include/libpng14 -L/usr/X11/lib -lpng14 $ pkg-config --libs --cflags libpng.pc -I/usr/X11/include/libpng14 -L/usr/X11/lib -lpng14 You should also have libpng.la and libpng14.la containing identical text and: libpng.dylib -> libpng14.dylib So in other words, all you accomplished was breaking old applications that were linked against libpng-1.2. Chances are you are building something which is explicitly requesting "libpng12" and by making that fail, you caused it to fallback on "libpng" which made it get 1.4. I'd revert those changes and look into what you are building that is linking (explicitly) against the version 1.2 library and make it link against the 1.4 library instead. --Jeremy
participants (2)
-
Dave Ray
-
Jeremy Huddleston