Trouble is that these libraries have different names and are all present. It should be to the applications to decide whatever library they want to use and the system shoud not interfere in any way. Albeit it looks like there is some weird interferences for some applications. The new libpng libraries don't lack any functional things as I would say the 1.2 are old freezed version receiving only security updates. The matter is that png_struct and png_info data are no more in header files (for devel) and that the source code of applications has to be adapted to this reality using png_get_xxx() and png_set_xxx() accessor functions. Some applications developpers refused to do and locked down the libnpg shared library to the 1.12 version. Here is the result of $ sudo ldconfig -v > ldconfig-v.log attached. Both libpng libraries are visible in the log. Here is a summary of what I have done about libpng in my system. ------------------------------------------------------------------------------------------ I have set the libpng16 in /usr/lib/ (this is the default from compiling the tarball) and made sym links to /usr/lib/x86_64-linux-gnu Compiled package libpng16-0_1.6.2-0ubuntu0_amd64.deb ------------------------------------------------------ Installed Files --------------- /usr/bin/libpng-config ---> symbolic link to libpng16-config /usr/bin/libpng16-config +/usr/include/libpng ---> symbolic link to libpng16 /usr/include/libpng16 /usr/include/libpng16/png.h /usr/include/libpng16/pngconf.h /usr/include/libpng16/pnglibconf.h /usr/include/png.h ---> symbolic link to libpng16/png.h /usr/include/pngconf.h ---> symbolic link to libpng16/pngconf.h /usr/include/pnglibconf.h ---> symbolic link to libpng16/pnglibconf.h /usr/lib/libpng.a ---> symbolic link to libpng16.a /usr/lib/libpng.la /usr/lib/libpng.so ---> symbolic link to libpng16.so /usr/lib/libpng16.a /usr/lib/libpng16.la /usr/lib/libpng16.so ---> symbolic link to libpng16.so.16.2.0 /usr/lib/libpng16.so.16 ---> symbolic link to libpng16.so.16.2.0 /usr/lib/libpng16.so.16.2.0 /usr/lib/pkgconfig /usr/lib/pkgconfig/libpng.pc ---> symbolic link to libpng16.pc /usr/lib/pkgconfig/libpng16.pc /usr/share/man/man3 /usr/share/man/man3/libpng.3.gz /usr/share/man/man3/libpngpf.3.gz /usr/share/man/man5 /usr/share/man/man5/png.5.gz I did add a symbolic link named libpng12.so.0 ---> libpng.so ---------------------------------------------------------------- $ cd /usr/lib/ $ sudo ln -s libpng.so libpng12.so.0 Package libpng12-0 (Official Ubuntu) ------------------------------------ libpng12-0 1.2.46-3ubuntu4 PNG library - runtime Installed Files --------------- /lib/x86_64-linux-gnu/libpng12.so.0 ---> symbolic link to libpng12.so.0.46.0 /lib/x86_64-linux-gnu/libpng12.so.0.46.0 /usr/share/doc-base/libpng12 /usr/share/doc/libpng12-0 /usr/share/doc/libpng12-0/ANNOUNCE /usr/share/doc/libpng12-0/KNOWNBUG /usr/share/doc/libpng12-0/README.Debian /usr/share/doc/libpng12-0/README.gz /usr/share/doc/libpng12-0/TODO /usr/share/doc/libpng12-0/changelog.Debian.gz /usr/share/doc/libpng12-0/copyright /usr/share/doc/libpng12-0/libpng-1.2.46.txt.gz Pacakge libpng12-dev (Official Ubuntu) -------------------------------------- libpng12-dev 1.2.46-3ubuntu4 PNG library - development Installed Files --------------- /usr/bin/libpng-config ---> symbolic link to libpng12-config /usr/bin/libpng12-config /usr/include/libpng ---> symbolic link to libpng12 /usr/include/libpng12 /usr/include/libpng12/png.h /usr/include/libpng12/pngconf.h /usr/include/png.h ---> symbolic link to libpng12/png.h /usr/include/pngconf.h ---> symbolic link to libpng12/pngconf.h /usr/lib/x86_64-linux-gnu/libpng.a ---> symbolic link to libpng12.a /usr/lib/x86_64-linux-gnu/libpng.so ---> symbolic link to libpng12.so /usr/lib/x86_64-linux-gnu/libpng12.a /usr/lib/x86_64-linux-gnu/libpng12.so ---> symbolic link to /lib/x86_64-linux-gnu/libpng12.so.0 /usr/lib/x86_64-linux-gnu/pkgconfig /usr/lib/x86_64-linux-gnu/pkgconfig/libpng.pc ---> symbolic link to libpng12.pc /usr/lib/x86_64-linux-gnu/pkgconfig/libpng12.pc /usr/share/doc/libpng12-dev /usr/share/doc/libpng12-dev/changelog.Debian.gz ---> symbolic link to ../libpng12-0/changelog.Debian.gz /usr/share/doc/libpng12-dev/copyright /usr/share/doc/libpng12-dev/examples /usr/share/doc/libpng12-dev/examples/example.c.gz /usr/share/doc/libpng12-dev/examples/pngtest.c.gz /usr/share/doc/libpng12-dev/examples/pngtest.png /usr/share/man/man1 /usr/share/man/man1/libpng-config.1.gz ---> symbolic link to libpng12-config.1.gz /usr/share/man/man1/libpng12-config.1.gz /usr/share/man/man3 /usr/share/man/man3/libpng.3.gz /usr/share/man/man5 /usr/share/man/man5/png.5.gz At the moment I have no experience in forcing LD to look at alternative path at compile time. I will give it a try may be.