static과 shared library에 관한 질문입니다.
안녕하세여~ 고수님들 한수 지도해 주시길 부탁드립니다.
Program이 있는데 library를 모두 static으로 compile해서 사용 합니다.
예를 들어서 libnet.so를 사용 하지 않고 libnet.a로만 만들어서 사용 하고 있는데요.
여러 유닉스로 포팅 되다 보니까 프로그램에서 사용 하는 library가 어떤 플랫폼에는 없는 경우가 있고 그런 문제를 해결 하기 위해서 static 으로 컴파일 해왔습니다.
그런데 binary가 그것 때문에 상당히 커졌거든여 25M나 됩니다.
그냥 컴파일 하면 한 10M 정도 될 것 같은 데여...
이럴 경우 share library를 사용 하고 배포시 스크립트로 없는 library를 설치 하고, 있다면 설치 하지 않고 library 버전을 확인 해서 호환 가능 하면 놔두고 호환 가능 하지 않다면 다른 디렉토리에 라이브러리를 복사해 넣고
실행시 LD_LIBRARY_PATH로 그 디렉토리를 먼저 찾게 그런 식으로
바꾸어 볼려고 합니다.
그런데 실행 파일 크기를 줄이게 되면 어떤 어떤 효과가 있을 까여?
일단 메모리를 적게 차지 할 것이고, 그래서 static이 가지는 아주 약간 빠를수 있는 장점을 커버 할 수 있을 것 이라는 생각이 드는 데여
자세히 크기를 크게 줄이 면서 얻을 수 있는 장점에 대해서 알고 싶습니다.
그래야 신입인 제가 팀장님께 말씀 드릴 수 있을 것 같아서여^^;;
그럼 미리 감사의 말씀 드립니다.^^;; 수고 하세여~
-g 를 넣어서 커진거 아닐까요?만약 그런것이라면 strip 으로
-g 를 넣어서 커진거 아닐까요?
만약 그런것이라면 strip 으로 디버그 정보를 제거하세요
---
http://coolengineer.com
댓글 달기