웹기반 데이터 압축 라이브러리 zlib설치
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 1,664 조회
- 0 추천
-
목록
본문
웹기반 데이터 압축 라이브러리 zlib설치
zlib은 웹에서 gzip등으로 압축된 압축파일을 읽고 쓰기 위해 꼭 필요한 라이브러리이다.
특히 MRTG를이용한 트래픽모니터링 홈페이지를 구축할 때에에 반드시 필요하다.
zlib라이브러리에서 사용되는 데이터포맷은 RFC 1950부터 1951까지 잘 나타나있다.
RFC 1950은 zlib포맷에 대해 규정하고 있는 문서이며 참고 URL은 http://www.ietf.org/rfc/rfc1950.txt이다.
그리고 RFC 1951은 deflate포맷에 대해 규정하고있는 문서이며 URL은 http://www.ietf.org/rfc/rfc1951.txt이다.
그리고 RFC 1952는 gzip압축포맷에 대해 규정하고있는 문서이며 관련 URL은 http://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
위의 웹사이트는 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의 소개와 설치에 대해서 알아보았다.
관련자료
-
이전
-
다음