강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

웹에서 png이미지 사용을 위한 그래픽라이브러리 libpng설치

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

웹에서 png이미지 사용을 위한 그래픽라이브러리 libpng설치

 

 

 

 

앞에서 설치한 zlib가 생성한 이미지파일을 png포맷으로 변형하여 사용하기 위한 라이브러리이다.

 

 

 

 즉 포터블네트워크 그래픽라이브러리로서 libpng zlib이 반드시 설치되어있어야한다.

 

 

 

 이 역시 MRTG등에서 웹화면 실시간 그래픽표현을 위해 zlib과 함께 없어서는 않될 라이브러리이다.

 

 

 

 

홈페이지 : http://www.libpng.org


f626a104e0c090a148359de2dcc6d85b_1687931598_9071.png
 

f626a104e0c090a148359de2dcc6d85b_1687931606_4752.png
 



 

 

그럼 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

Location: https://downloads.sourceforge.net/project/libpng/libpng16/1.6.38/libpng-1.6.38.tar.gz?ts=gAAAAABkm4hSERtFQfVROaFQLB4zdyxuzTYrLBbdx42xYY3M0Gi_VwJhzTvaksvmY5LDGc8zwk0QsigD6qzIZmIsa_wPux3U8w==&use_mirror=nchc&r= [following]

--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의 설치과정을 모두 보았다.


관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,035 명
  • 현재 강좌수 :  35,798 개
  • 현재 접속자 :  119 명