SO 만들때 꼭 필요한 o (object file)만 포함시키는 옵션이 뭔가
글쓴이: narusas / 작성시간: 금, 2005/03/04 - 1:51오후
libXXX.a ( a.o b.o c.o d.o) 를 사용하는 libUsingXXX.so 파일을 만들고 싶은데
실제로 사용하는 것은 libXXX.a에서 a.o b.o만 사용하기때문에 so에 사용하는 o파일만 포함 시키고 싶은데요, 어떻게 하면 좋습니까?
실제로는 libpthread.a를 사용하는데(2메가정도 되죠 용량이) 제 코드(wrapper.c와 queue.c)가 40kb밖에 않됨에도 so로 만들고 나면 3메가정도로 늘어나 버립니다.
Makefile은 다음과 같습니다.
LIBRARY= /usr/local/cross/fp_le/target/usr/lib/libpthread.a
HEADER=-I. -I./include -I./include/linux
JNIOPTION=-fPIC -shared -Wl,-soname,libwrapper.so
COMPILEOPTION=-static -lc
all: libwrapper.so
libwrapper.so: wrapper.o queue.o
${CC} -o libwrapper.so ${JNIOPTION} ${LIBRARY} ${HEADER} *.o ${COMPILEOPTION}
wrapper.o:
${CC} -c wrapper.c ${LIBRARY} ${HEADER} ${COMPILEOPTION}
queue.o: queue.h queue.c
${CC} -c queue.c ${COMPILEOPTION}
Forums:
링커들은 이미 그런 방식으로 동작합니다..a 를 링크하는 경우에
링커들은 이미 그런 방식으로 동작합니다.
.a 를 링크하는 경우에 .a 에 포함된 .o 파일들중에
실제로 사용되는 함수가 포함된 .o 파일만이 링크됩니다.
그래서 .o 파일들간에 결합도가 높을수록 링크된 결과물의 덩치가 커지죠.
올리신 Makefile 을 봤을때, 그정도 크기면 정상이 아닐까 싶네요.
-static -lc 로 인해서 C Library 도 정적 링크하는것이니..
-static -lc 가 어떤 옵션인가요?
-static -lc 가 어떤 옵션인가요?
저는 SO 파일 만들기 강좌에서 보고 그대로 옮긴건데요 -_-;;;
댓글 달기