정적 라이브러리 여러개로 공유 라이브러리 생성시.
글쓴이: muzie / 작성시간: 월, 2011/09/26 - 5:58오후
예전에 liba.a 라는 것과 libb.a (가칭)라는 정적 라이브러리를 하나의 공유 라이브러리로 만들기 위해
gcc -shared -Wl,-soname,libab.so -o libab.so -L./ -la -lb
이렇게 시도를 해봤습니다. 안되더군요.. 그래서 구글링 끝에 알아낸 방법인,
이것을 풀어서 (ar x로) 다시
gcc -shared -Wl,-soname,libab.so -o a.o b.o
로 하니 또 됩니다. 심볼 만드는 방법이 다른가 싶어서 그냥 그런가보다 하고 넘어갔었는데,
어느날 똑같은 케이스,
libd.a 라는 것과 libe.a 라는 것을 똑같이 풀어
다른 오브젝트 파일과 함께 libde.so 파일을 생성하였는데 심볼을 못찾습니다.(nm 으로 확인결과 U더군요.)
그래서 혹시나 싶어 이전에 안되던 방법인
gcc -shared -Wl,-soname,libde.so -o libde.so -L./ -ld -le
로 하니 됩니다. 이게 대체 어떻게 된 일인지요 -_-;
뭔가 의존성 문제가 관련되어 있는 것 같긴 한데 어떻게 접근해야 하는지 감이 안섭니다.
한 수 가르침 부탁드립니다.
아, 참고적으로 함수 이름이 겹치거나 파일명 자체가 겹치는 경우는 없습니다.
Forums:
댓글 달기