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

웹기반 데이터 압축 라이브러리 zlib설치

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

웹기반 데이터 압축 라이브러리 zlib설치

 

 

 

 

zlib은 웹에서 gzip등으로 압축된 압축파일을 읽고 쓰기 위해 꼭 필요한 라이브러리이다.

 

 

 

 특히 MRTG를이용한 트래픽모니터링 홈페이지를 구축할 때에에 반드시 필요하다.

 

 

 

 zlib라이브러리에서 사용되는 데이터포맷은 RFC 1950부터 1951까지 잘 나타나있다.

 

 

 

 RFC 1950 zlib포맷에 대해 규정하고 있는 문서이며 참고 URL  http://www.ietf.org/rfc/rfc1950.txt이다.

 

 

 

 그리고 RFC 1951deflate포맷에 대해 규정하고있는 문서이며 URLhttp://www.ietf.org/rfc/rfc1951.txt이다.

 

 

 

 그리고 RFC 1952 gzip압축포맷에 대해 규정하고있는 문서이며 관련 URLhttp://www.ietf.org/rfc/rfc1952.txt이다.

 

 

 

 이에 대한 자세한 설명을 확인할 분들은 이들 문서를 확인하기 바란다.

 

 

 

 

 

zlib홈페이지 : http://www.zlib.org  또는 http://www.gzip.org/zlib/

zlib FAQ     : http://www.gzip.org/zlib/zlib_faq.html

 

 

 

 

 

f626a104e0c090a148359de2dcc6d85b_1687931360_4346.png
 


f626a104e0c090a148359de2dcc6d85b_1687931368_7817.png
 

 

 

 

 

위의 웹사이트는 zlib의 공식홈페이지로서 www.zlib.org 또는 zlib.net웹사이트이다.

 

 

 

 여기서 zlib의 모든 것을 얻을 수 있다.

 

 

 

 다운로드는 기본이고 zlib의 최신 기술동향등을 확인할 수 있으므로 한번쯤 방문해서 확인해두면 앞으로 많은 도움이 될 것이다.

 

 

 

 


, 그럼 zlib을 설치해보도록 하겠다.

 

 

 

 zlib소스를 다운받으려면 위의 홈페이지에서 다운받을 수 있지만 리눅스포털 FTP사이트에 모든 소스들을 다운로드 할 수 있도록 제공하고있다.

 

 

 

 따라서 아래의 예와같이 wget을 이용하여 ftp.linux.co.kr에서 다운로드하도록 하겠다.

 

 

 

 

 

[root@RockyLinux01 local]# wget https://www.zlib.net/fossils/zlib-1.2.13.tar.gz

--2023-06-27 17:17:56--  https://www.zlib.net/fossils/zlib-1.2.13.tar.gz

Resolving www.zlib.net (www.zlib.net)... 85.187.148.2

Connecting to www.zlib.net (www.zlib.net)|85.187.148.2|:443... connected.

HTTP request sent, awaiting response... 200 OK

Length: 1497445 (1.4M) [application/x-gzip]

Saving to: `zlib-1.2.13.tar.gz'

 

zlib-1.2.13.tar.gz            100%[=================================================>]   1.43M  1.54MB/s    in 0.9s

 

2023-06-27 17:17:58 (1.54 MB/s) - `zlib-1.2.13.tar.gz' saved [1497445/1497445]

 

[root@RockyLinux01 local]#



 

 

다음은 이렇게 다운로드한 zlib압축소스파일을 ls로 확인한 후에 tar로 압축을 해제하고 있다.

 

 

 

 압축이 해제되면 “zlib-버전이름으로 된 디렉토리가 생성되고 그 디렉토리내에 zlib파일들이 복사되어 들어간다.

 

 

 

 

 

[root@RockyLinux01 local]# tar xvf zlib-1.2.13.tar.gz

zlib-1.2.13/

zlib-1.2.13/zutil.h

zlib-1.2.13/inftrees.h

zlib-1.2.13/inflate.c

zlib-1.2.13/CMakeLists.txt

zlib-1.2.13/zlib.map

zlib-1.2.13/zlib.pc.cmakein

zlib-1.2.13/LICENSE

zlib-1.2.13/zlib.3.pdf

zlib-1.2.13/test/

zlib-1.2.13/test/infcover.c

zlib-1.2.13/test/example.c

zlib-1.2.13/test/minigzip.c

zlib-1.2.13/configure

zlib-1.2.13/compress.c

zlib-1.2.13/zlib.3

zlib-1.2.13/ChangeLog

zlib-1.2.13/deflate.c

zlib-1.2.13/qnx/

이하생략

 

 

 

 

이제 zlib디렉토리로 들어가 보겠다.

 

 

 

 

 

[root@RockyLinux01 local]# cd zlib-1.2.13/

[root@RockyLinux01 zlib-1.2.13]#

 

 

 

 

그리고 다음과 같이 configure를 실행한다.

 

 

 

 

 

[root@RockyLinux01 zlib-1.2.13]# ./configure

Checking for gcc...

Checking for shared library support...

Building shared library libz.so.1.2.13 with gcc.

Checking for size_t... Yes.

Checking for off64_t... Yes.

Checking for fseeko... Yes.

Checking for strerror... Yes.

Checking for unistd.h... Yes.

Checking for stdarg.h... Yes.

Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf().

Checking for vsnprintf() in stdio.h... Yes.

Checking for return value of vsnprintf()... Yes.

Checking for attribute(visibility) support... Yes.

[root@RockyLinux01 zlib-1.2.13]#

 

 

 

 

그리고 컴파일을 수행하기 위하여 make를 실행한다.

 

 

 

 컴파일 결과로 zlib바이너리파일들과 필요한 설정파일들이 생성된다.

 

 

 

 

 

[root@RockyLinux01 zlib-1.2.13]# make

gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -I. -c -o example.o test/example.c

gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o adler32.o adler32.c

gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o crc32.o crc32.c

gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o deflate.o deflate.c

gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o infback.o infback.c

gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o inffast.o inffast.c

gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o inflate.o inflate.c

gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o inftrees.o inftrees.c

gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o trees.o trees.c

gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o zutil.o zutil.c

gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o compress.o compress.c

gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o uncompr.o uncompr.c

gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o gzclose.o gzclose.c

gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o gzlib.o gzlib.c

gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o gzread.o gzread.c

gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -c -o gzwrite.o gzwrite.c

ar rc libz.a adler32.o crc32.o deflate.o infback.o inffast.o inflate.o inftrees.o trees.o zutil.o compress.o uncompr.o gzclose.o gzlib.o gzread.o gzwrite.o

gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o example example.o  -L. libz.a

gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -I. -c -o minigzip.o test/minigzip.c

gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o minigzip minigzip.o  -L. libz.a

gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/adler32.o adler32.c

gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/crc32.o crc32.c

gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/deflate.o deflate.c

gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/infback.o infback.c

gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/inffast.o inffast.c

gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/inflate.o inflate.c

gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/inftrees.o inftrees.c

gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/trees.o trees.c

gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/zutil.o zutil.c

gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/compress.o compress.c

gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/uncompr.o uncompr.c

gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/gzclose.o gzclose.c

gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/gzlib.o gzlib.c

gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/gzread.o gzread.c

gcc -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN  -DPIC -c -o objs/gzwrite.o gzwrite.c

gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map -O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o libz.so.1.2.13 adler32.lo crc32.lo deflate.lo infback.lo inffast.lo inflate.lo inftrees.lo trees.lo zutil.lo compress.lo uncompr.lo gzclose.lo gzlib.lo gzread.lo gzwrite.lo  -lc

rm -f libz.so libz.so.1

ln -s libz.so.1.2.13 libz.so

ln -s libz.so.1.2.13 libz.so.1

gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o examplesh example.o  -L. libz.so.1.2.13

gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o minigzipsh minigzip.o  -L. libz.so.1.2.13

gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -I. -D_FILE_OFFSET_BITS=64 -c -o example64.o test/example.c

gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o example64 example64.o  -L. libz.a

gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -I. -D_FILE_OFFSET_BITS=64 -c -o minigzip64.o test/minigzip.c

gcc -O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o minigzip64 minigzip64.o  -L. libz.a

[root@RockyLinux01 zlib-1.2.13]#

 

 

 

 

생성된 바이너리들을 필요한 곳으로 복사하고 설치하기 위하여 “make install”을 실행하였다.

 

 

 

 

 

[root@RockyLinux01 zlib-1.2.13]# make install

rm -f /usr/local/lib/libz.a

cp libz.a /usr/local/lib

chmod 644 /usr/local/lib/libz.a

cp libz.so.1.2.13 /usr/local/lib

chmod 755 /usr/local/lib/libz.so.1.2.13

rm -f /usr/local/share/man/man3/zlib.3

cp zlib.3 /usr/local/share/man/man3

chmod 644 /usr/local/share/man/man3/zlib.3

rm -f /usr/local/lib/pkgconfig/zlib.pc

cp zlib.pc /usr/local/lib/pkgconfig

chmod 644 /usr/local/lib/pkgconfig/zlib.pc

rm -f /usr/local/include/zlib.h /usr/local/include/zconf.h

cp zlib.h zconf.h /usr/local/include

chmod 644 /usr/local/include/zlib.h /usr/local/include/zconf.h

[root@RockyLinux01 zlib-1.2.13]#

 

 

 

 

위의 설치결과로 새로 생성된 파일들을 다음과 같다.

 

 

 

 

 

/usr/local/include/zlib.h

 

/usr/local/include/zconf.h

 

/usr/local/lib/libz.a

 

/usr/local/share/man/man3

 

 

 

 

 

 

이제부터 이 파일들은 리눅스기반의 웹에서 gzip으로 데이터를 압축하여 읽고 쓰는 역할에 사용될 것이다.

 

 

 

  이상으로 zlib의 소개와 설치에 대해서 알아보았다.


관련자료

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

공지사항


뉴스광장


  • 현재 회원수 :  60,150 명
  • 현재 강좌수 :  36,432 개
  • 현재 접속자 :  214 명