[Linux] CentOS7에서 HTML to PDF 실행시 Error
/etc/centos-release:CentOS Linux release 7.6.1810 (Core)
/etc/os-release:NAME="CentOS Linux"
/etc/os-release:VERSION="7 (Core)"
/etc/os-release:ID="centos"
/etc/os-release:ID_LIKE="rhel fedora"
/etc/os-release:VERSION_ID="7"
/etc/os-release:PRETTY_NAME="CentOS Linux 7 (Core)"
/etc/os-release:ANSI_COLOR="0;31"
/etc/os-release:CPE_NAME="cpe:/o:centos:centos:7"
/etc/os-release:HOME_URL="https://www.centos.org/"
/etc/os-release:BUG_REPORT_URL="https://bugs.centos.org/"
/etc/os-release:CENTOS_MANTISBT_PROJECT="CentOS-7"
/etc/os-release:CENTOS_MANTISBT_PROJECT_VERSION="7"
/etc/os-release:REDHAT_SUPPORT_PRODUCT="centos"
/etc/os-release:REDHAT_SUPPORT_PRODUCT_VERSION="7"
/etc/redhat-release:CentOS Linux release 7.6.1810 (Core)
/etc/system-release:CentOS Linux release 7.6.1810 (Core)
/usr/local/bin/wkhtmltopdf: error while loading shared libraries: libpng16.so.16: cannot open shared object file: No such file or directory
Fix error loading shared libraries: libpng16.so.16: cannot open shared object file
You can easily install libpng by building from source on a Linux system. I’ll be performing the installation to fix “error loading shared libraries: libpng16.so.16: cannot open shared object file” on a CentOS 7 system. But first we’ll need to install build tools.
# CentOS / Amazon Linux / Oracle Linux
sudo yum -y groupinstall "Development Tools"
# Ubuntu / Debian
sudo apt-get update
sudo apt-get install build-essential
Confirm make and gcc tools are installed.
$ gcc --version
gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-12)
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ make --version
GNU Make 3.82
Built for x86_64-koji-linux-gnu
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Then download the latest release of libpng from sourceforge.
wget https://sourceforge.net/projects/libpng/files/libpng16/1.6.37/libpng-1.6.37.tar.gz
Extract the file once downloaded:
tar xvf libpng-1.6.37.tar.gz
Run the configure command inside the directory created after file extraction.
cd libpng-1.6.37/
./configure
Run make command after success in the previous command execution.
make
Finally install libpng library in your Linux system.
$ sudo make install
Here is my successful installation message.
....
make install-data-hook
make[3]: Entering directory `/home/ec2-user/libpng-1.6.37'
+ cd /usr/local/include
+ for f in pnglibconf.h png.h pngconf.h
+ rm -f pnglibconf.h
+ ln -s libpng16/pnglibconf.h pnglibconf.h
+ for f in pnglibconf.h png.h pngconf.h
+ rm -f png.h
+ ln -s libpng16/png.h png.h
+ for f in pnglibconf.h png.h pngconf.h
+ rm -f pngconf.h
+ ln -s libpng16/pngconf.h pngconf.h
+ cd /usr/local/lib/pkgconfig
+ rm -f libpng.pc
+ ln -s libpng16.pc libpng.pc
make[3]: Leaving directory `/home/ec2-user/libpng-1.6.37'
make[2]: Leaving directory `/home/ec2-user/libpng-1.6.37'
make[1]: Leaving directory `/home/ec2-user/libpng-1.6.37'
After installation you should be able to locate libpng16.so.16 file.
$ sudo find / -name libpng16.so.16
/usr/local/lib/libpng16.so.16
/home/ec2-user/libpng-1.6.37/.libs/libpng16.so.16
You can then continue to build the application that depends on libpng library.