CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): HellCat ((void*)0)
날 짜 (Date): 1994년03월20일(일) 01시12분19초 KST
제 목(Title): 답:[질문] sun의 libxx.sa.xx



태양의 경우 *.sa.* 는 initialized 데이타를 말합니다.
즉 이 *.sa.* 에 있는 데이타는 global 로서

예를 들면 test.c 에서

#ifdef SHLIB
struct junk dummy = { 1, "정크", 2, "또정크" };
endif

라고 달랑 넣어 놓구.

test2.c 에서
#ifdef SHLIB
extern struct junk dummy;
#else
struct junk dummy = {1, "정크", 2, "또정크" };
endif

이렇게 해놓았을 경우.

스테틱 라이브러리 *.a 를 만들 경우엔
test.c 는 콤파일해서 ar 하지 않고
test2.c 하나만 콤파일 해서 ar 해 줍니다.

그리고 세어드 라이브러리 만들 경우엔
test2.c 는 -DSHLIB 을 정해서 콤파일 할때
dummy 는 엑스터널로 쓰게 해주고

test2.o 는 *.so.* 에 들어 가게 해주고

test.o 는 *.sa.* 에 낑겨 집니다.

즉 글로벌로 정해지고 그 라이브러리 안에서 initialize
되어서 export 되는 데이타는 shared lib. 만들땐
*.sa.* 로 몰아서 들어가고 그걸 사용하는 오브젝트는
*.so.* 로 몰아 놓습니다.

근데 뻬리깡님의 문제는 그냥 한번 ranlib * 를
라이브러리 몰아 놓은데 돌려 주면 해결 될거에요.

단 위의 것은 태양의 경우라는 걸 꼭 기억하세요.

SYS-5.4.* 는 좀 달라 졌을꺼에요.

이노므 세어드라이브러리 만들라면 엄청 머리 굴려야 해요.
     2/28 일 까정 건들지 말것!
                (2 년 프로젝트 마감날)
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.