웹에서 png이미지 사용을 위한 그래픽라이브러리 libpng설치
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 3,489 조회
- 0 추천
- 목록
본문
웹에서 png이미지 사용을 위한 그래픽라이브러리 libpng설치
앞에서 설치한 zlib가 생성한 이미지파일을 png포맷으로 변형하여 사용하기 위한 라이브러리이다.
즉 포터블네트워크 그래픽라이브러리로서 libpng는 zlib이 반드시 설치되어있어야한다.
이 역시 MRTG등에서 웹화면 실시간 그래픽표현을 위해 zlib과 함께 없어서는 않될 라이브러리이다.
홈페이지 : http://www.libpng.org
그럼 libpng를 설치해보도록 하겠다.
먼저 libpng압축소스파일을 wget을 이용하여 다음과 같이 아래 사이트에서 wget을 이용하여 가져온다.
[root@RockyLinux local]# wget https://sourceforge.net/projects/libpng/files/libpng16/1.6.38/libpng-1.6.38.tar.gz --2023-06-28 10:09:37-- https://sourceforge.net/projects/libpng/files/libpng16/1.6.38/libpng-1.6.38.tar.gz Resolving sourceforge.net (sourceforge.net)... 104.18.11.128, 104.18.10.128, 2606:4700::6812:a80, ... Connecting to sourceforge.net (sourceforge.net)|104.18.11.128|:443... connected. HTTP request sent, awaiting response... 301 Moved Permanently Location: https://sourceforge.net/projects/libpng/files/libpng16/1.6.38/libpng-1.6.38.tar.gz/ [following] --2023-06-28 10:09:37-- https://sourceforge.net/projects/libpng/files/libpng16/1.6.38/libpng-1.6.38.tar.gz/ Reusing existing connection to sourceforge.net:443. HTTP request sent, awaiting response... 301 Moved Permanently Location: https://sourceforge.net/projects/libpng/files/libpng16/1.6.38/libpng-1.6.38.tar.gz/download [following] --2023-06-28 10:09:38-- https://sourceforge.net/projects/libpng/files/libpng16/1.6.38/libpng-1.6.38.tar.gz/download Reusing existing connection to sourceforge.net:443. HTTP request sent, awaiting response... 302 Found --2023-06-28 10:09:38-- https://downloads.sourceforge.net/project/libpng/libpng16/1.6.38/libpng-1.6.38.tar.gz?ts=gAAAAABkm4hSERtFQfVROaFQLB4zdyxuzTYrLBbdx42xYY3M0Gi_VwJhzTvaksvmY5LDGc8zwk0QsigD6qzIZmIsa_wPux3U8w==&use_mirror=nchc&r= Resolving downloads.sourceforge.net (downloads.sourceforge.net)... 204.68.111.105 Connecting to downloads.sourceforge.net (downloads.sourceforge.net)|204.68.111.105|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://nchc.dl.sourceforge.net/project/libpng/libpng16/1.6.38/libpng-1.6.38.tar.gz [following] --2023-06-28 10:09:39-- https://nchc.dl.sourceforge.net/project/libpng/libpng16/1.6.38/libpng-1.6.38.tar.gz Resolving nchc.dl.sourceforge.net (nchc.dl.sourceforge.net)... 140.110.96.69, 2001:e10:ffff:1f02::17 Connecting to nchc.dl.sourceforge.net (nchc.dl.sourceforge.net)|140.110.96.69|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 1512016 (1.4M) [application/x-gzip] Saving to: `libpng-1.6.38.tar.gz'
libpng-1.6.38.tar.gz 100%[=================================================>] 1.44M 1.94MB/s in 0.7s
2023-06-28 10:09:40 (1.94 MB/s) - `libpng-1.6.38.tar.gz' saved [1512016/1512016]
[root@RockyLinux local]# |
그리고 다음은 압축된 소스파일을 tar로 압축해제하고있다.
압축이 해제되면 “libpng-버전”으로된 디렉토리가 생성되고 압축해제된 파일들이 이 디렉토리로 복사되어 들어간다.
[root@RockyLinux local]# tar xvfz libpng-1.6.38.tar.gz libpng-1.6.38/ libpng-1.6.38/.appveyor.yml libpng-1.6.38/.gitignore libpng-1.6.38/.travis.yml libpng-1.6.38/ANNOUNCE libpng-1.6.38/AUTHORS libpng-1.6.38/CHANGES libpng-1.6.38/CMakeLists.txt libpng-1.6.38/INSTALL libpng-1.6.38/LICENSE libpng-1.6.38/Makefile.am libpng-1.6.38/Makefile.in libpng-1.6.38/README libpng-1.6.38/TODO libpng-1.6.38/TRADEMARK libpng-1.6.38/aclocal.m4 libpng-1.6.38/arm/ libpng-1.6.38/arm/arm_init.c libpng-1.6.38/arm/filter_neon.S libpng-1.6.38/arm/filter_neon_intrinsics.c libpng-1.6.38/arm/palette_neon_intrinsics.c libpng-1.6.38/autogen.sh libpng-1.6.38/ci/ libpng-1.6.38/ci/ci_autotools.sh libpng-1.6.38/ci/ci_cmake.sh libpng-1.6.38/ci/ci_legacy.sh libpng-1.6.38/compile libpng-1.6.38/config.guess libpng-1.6.38/config.h.in libpng-1.6.38/config.sub libpng-1.6.38/configure libpng-1.6.38/configure.ac libpng-1.6.38/contrib/ libpng-1.6.38/contrib/README.txt libpng-1.6.38/contrib/arm-neon/ libpng-1.6.38/contrib/arm-neon/README libpng-1.6.38/contrib/arm-neon/android-ndk.c 이하생략.. |
이제 컴파일하기 위하여 생성된 디렉토리로 이동한다.
[root@RockyLinux local]# cd libpng-1.6.38/ [root@RockyLinux libpng-1.6.38]# |
아래와 같이 libpng에서는 configure를 실행하지 않고 기존에 있던 여러종류의 makefile가운데 linux버전으로 되어있는 makefile.linux파일을 cp로 복사하여 사용한다.
이 작업이 configure과정이라고 생각하면 된다.
[root@RockyLinux libpng-1.6.38]# cp scripts/makefile.linux ./makefile [root@RockyLinux libpng-1.6.38]# [root@RockyLinux libpng-1.6.38]# ls -l makefile -rw-r--r-- 1 root root 8324 6월 28 10:11 makefile [root@RockyLinux libpng-1.6.38]# |
그리고 다음은 “make test”를 실행하여 컴파일한다.
이 과정에서 gcc컴파일러는 libpng관련 목적파일과 헤드파일을 생성한다.
[root@RockyLinux libpng-1.6.38]# make test cp scripts/pnglibconf.h.prebuilt pnglibconf.h gcc -c -I../zlib -DPNG_ARM_NEON_OPT=0 -DPNG_MIPS_MSA_OPT=0 -DPNG_POWERPC_VSX_OPT=0 -DPNG_INTEL_SSE_OPT=0 -O3 -funroll-loops -Wall -Wextra -Wundef -o pngtest.o pngtest.c gcc -c -I../zlib -DPNG_ARM_NEON_OPT=0 -DPNG_MIPS_MSA_OPT=0 -DPNG_POWERPC_VSX_OPT=0 -DPNG_INTEL_SSE_OPT=0 -O3 -funroll-loops -Wall -Wextra -Wundef -fPIC -o png.pic.o png.c png.c: In function ‘png_convert_to_rfc1123_buffer’: pngpriv.h:1740:4: warning: ‘number_buf’ may be used uninitialized [-Wmaybe-uninitialized] 1740 | png_format_number(buffer, buffer + (sizeof buffer), format, number) png.c:757:69: note: in definition of macro ‘APPEND_STRING’ 이하생략.. |
그리고 다음은 “make install”을 실행하여 생성된 파일들을 복사하여 설치한다.
[root@RockyLinux libpng-1.6.38]# make install cp png.h pngconf.h pnglibconf.h /usr/local/include/libpng16 chmod 644 /usr/local/include/libpng16/png.h /usr/local/include/libpng16/pngconf.h /usr/local/include/libpng16/pnglibconf.h (cd /usr/local/include; ln -sf libpng16 libpng; ln -sf libpng16/* .) cp libpng.a /usr/local/lib/libpng16.a chmod 644 /usr/local/lib/libpng16.a (cd /usr/local/lib; ln -sf libpng16.a libpng.a) cat scripts/libpng.pc.in | sed -e s!@prefix@!/usr/local! \ -e s!@exec_prefix@!/usr/local! \ -e s!@libdir@!/usr/local/lib! \ -e s!@includedir@!/usr/local/include! \ -e s!-lpng16!-lpng16\ -lz\ -lm! > libpng.pc cp libpng16.so.16 /usr/local/lib/libpng16.so.16.38 chmod 755 /usr/local/lib/libpng16.so.16.38 (cd /usr/local/lib; \ ln -sf libpng16.so.16.38 libpng16.so; \ ln -sf libpng16.so libpng.so) cp libpng.pc /usr/local/lib/pkgconfig/libpng16.pc chmod 644 /usr/local/lib/pkgconfig/libpng16.pc (cd /usr/local/lib/pkgconfig; ln -sf libpng16.pc libpng.pc) cp libpng.3 /usr/local/man/man3 cp libpngpf.3 /usr/local/man/man3 cp png.5 /usr/local/man/man5 ( cat scripts/libpng-config-head.in; \ echo prefix=\"/usr/local\"; \ echo I_opts=\"-I/usr/local/include/libpng16\"; \ echo L_opts=\"-L/usr/local/lib\"; \ echo R_opts=\"-Wl,-rpath,/usr/local/lib\"; \ echo libs=\"-lpng16 -lz -lm\"; \ cat scripts/libpng-config-body.in ) > libpng-config chmod +x libpng-config cp libpng-config /usr/local/bin/libpng16-config chmod 755 /usr/local/bin/libpng16-config (cd /usr/local/bin; ln -sf libpng16-config libpng-config) [root@RockyLinux libpng-1.6.38]# |
이와같이 설치가 완료되었다.
설치된 파일들을 간단히 살펴보도록 하자. libpng에서 설치되는 대부분의 파일들은 /usr/local/lib 디렉토리와 /usr/local/include/libpng16디렉토리에 설치된다.
다음은 이 두 디렉토리에 생성된 파일들을 확인한 것이다.
[root@RockyLinux libpng-1.6.38]# ls -l /usr/local/include/libpng16/ 합계 172 -rw-r--r-- 1 root root 142872 6월 28 10:12 png.h -rw-r--r-- 1 root root 22806 6월 28 10:12 pngconf.h -rw-r--r-- 1 root root 7611 6월 28 10:12 pnglibconf.h [root@RockyLinux libpng-1.6.38]# [root@RockyLinux libpng-1.6.38]# ls -l /usr/local/lib 합계 2380 -rw-r--r-- 1 root root 776190 5월 23 16:26 libGeoIP.a -rwxr-xr-x 1 root root 940 5월 23 16:26 libGeoIP.la lrwxrwxrwx 1 root root 18 5월 23 16:26 libGeoIP.so -> libGeoIP.so.1.6.12 lrwxrwxrwx 1 root root 18 5월 23 16:26 libGeoIP.so.1 -> libGeoIP.so.1.6.12 -rwxr-xr-x 1 root root 462792 5월 23 16:26 libGeoIP.so.1.6.12 lrwxrwxrwx 1 root root 10 6월 28 10:12 libpng.a -> libpng16.a lrwxrwxrwx 1 root root 11 6월 28 10:12 libpng.so -> libpng16.so -rw-r--r-- 1 root root 511730 6월 28 10:12 libpng16.a lrwxrwxrwx 1 root root 17 6월 28 10:12 libpng16.so -> libpng16.so.16.38 -rwxr-xr-x 1 root root 393512 6월 28 10:12 libpng16.so.16.38 -rw-r--r-- 1 root root 155198 6월 28 09:57 libz.a lrwxrwxrwx 1 root root 14 6월 28 09:57 libz.so -> libz.so.1.2.13 lrwxrwxrwx 1 root root 14 6월 28 09:57 libz.so.1 -> libz.so.1.2.13 -rwxr-xr-x 1 root root 126072 6월 28 09:57 libz.so.1.2.13 drwxr-xr-x 2 root root 73 6월 28 10:12 pkgconfig drwxr-xr-x 3 root root 27 5월 15 15:39 python3.9 [root@RockyLinux libpng-1.6.38]# |
위의 두 디렉토리에서 새로 생성된 libpng파일들을 확인해보기 바란다.
이상으로 libpng의 설치과정을 모두 보았다.
관련자료
-
이전
-
다음