2012. 10. 9. 15:43
zlib를 static link 빌드하여 linux에서 사용하기
2012. 10. 9. 15:43 in 프로그래밍/Linux/Ubuntu
zlib를 static하게 빌드하여 사용하는 방법을 공유합니다.
대략의 skeleton이니, 좀더 확인해 보시기 바랍니다.
와 같이 zlib를 사용하는 코드를 가정해 봅시다. 물론, 코드에 포함된 의미는 없습니다.
단지, gzopen이나 gzread와 같은 함수 사용에 대한 빌드가 이뤄지는지에 대한 확인이니깐요.
일단, 위 파일을 ~/zlib/test.cpp로 저장합니다.
우선, zlib의 source를 다운로드하고, ~/zlib/zlib-1.2.7에 압축을 풉니다. (작성일 기준으로 1.2.7 버전입니다.)
~/zlib/zlib-1.2.7/zlib.h이 존재하면 됩니다.
이제 다음과 같이 zlib를 컴파일 하고 test.cpp를 빌드합니다.
즉, zlib의 ./configure -s를 통해 makefile을 생성합니다. 그다음 make하여 .o와 같은 library를 생성합니다. 그리고 gcc를 통해 빌드된 .o를 link합니다. gcc에 들어같 .o는 다음과 같습니다.
불필요한 .o는 삭제해도 무방합니다. 그리고 example*.o와 minigzip*.o는 link하지 않도록 합니다.
위 나열된 .o들과 -I"..."는 사용하시는 Makefile에 추가하여 사용하시면 됩니다.
물론, 위 코드는 test.cpp 위치에 *.o를 복사하여 사용하는데, /zlib1.2.7.object 경로에 위 *.o를 복사하고, 상대경로로 *.o를 지정(예, ./zlib1.2.7.object/adler32.o)하면 좀더 유연할 듯 합니다.
대략의 skeleton이니, 좀더 확인해 보시기 바랍니다.
#include <stdio.h> #include "zlib.h" int main(void) { printf("hello, world!!!\r\n"); gzopen("/tmp/a.zlib", "w"); gzread(NULL, NULL, 0); } |
와 같이 zlib를 사용하는 코드를 가정해 봅시다. 물론, 코드에 포함된 의미는 없습니다.
단지, gzopen이나 gzread와 같은 함수 사용에 대한 빌드가 이뤄지는지에 대한 확인이니깐요.
일단, 위 파일을 ~/zlib/test.cpp로 저장합니다.
우선, zlib의 source를 다운로드하고, ~/zlib/zlib-1.2.7에 압축을 풉니다. (작성일 기준으로 1.2.7 버전입니다.)
~/zlib/zlib-1.2.7/zlib.h이 존재하면 됩니다.
이제 다음과 같이 zlib를 컴파일 하고 test.cpp를 빌드합니다.
~$ cd ~/zlib/zlib-1.2.7/ ~/zlib/zlib-1.2.7$ ./configure -s Checking for gcc... Checking for shared library support... Building shared library libz.so.1.2.7 with gcc. 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. Looking for a four-byte integer type... Found. ~/zlib/zlib-1.2.7$ make |
gcc ... adler32.o gzread.o inflate.o trees.o compress.o gzwrite.o inftrees.o uncompr.o crc32.o gzclose.o infback.o zutil.o deflate.o gzlib.o inffast.o
위 나열된 .o들과 -I"..."는 사용하시는 Makefile에 추가하여 사용하시면 됩니다.
물론, 위 코드는 test.cpp 위치에 *.o를 복사하여 사용하는데, /zlib1.2.7.object 경로에 위 *.o를 복사하고, 상대경로로 *.o를 지정(예, ./zlib1.2.7.object/adler32.o)하면 좀더 유연할 듯 합니다.
'프로그래밍 > Linux/Ubuntu' 카테고리의 다른 글
vmware에서 동작하는 ubuntu(11.04)에서 한글키 활성화하기 (0) | 2012.11.01 |
---|---|
ubuntu(11.04)에서 qtcreator/kde/qt 한글 입력하기 (nabi 설치, sudo 프로세스) (0) | 2012.11.01 |
ubuntu에서 sudo(root) 프로세스의 ui(kde) theme 제대로 잡기 (0) | 2012.10.31 |
uck 오류(gfxboot-theme-ubuntu) 임시 해결 방법 (0) | 2012.10.30 |
Ubuntu 12.04에서 ubuntu live cd image Custom(uck)하기 (synaptic 실행) (0) | 2012.10.25 |