라이브러리가 라이브러리를 링크할때...
글쓴이: mg2000 / 작성시간: 금, 2008/01/18 - 11:10오전
안녕하세요.
제가 A.so를 만들고, B.so와 C.so를 만들어서, A.so를 링크하도록 만들었습니다.
그런데, B.so와 C.so를 nm으로 해서 함수를 보니 A.so에 있는 함수들 앞에 U표시가 되어 있더라고요.
이거는 함수가 제대로 연결이 안되어 있다는 의미일텐데,
신기한것은 B.so는 U표시가 되어 있더라도 잘 돌아가는데,
C.so는 함수가 없다고 에러가 나네요.. ㅡ.ㅡ;;;;
둘다 안되면 모르겠는데, 하나는 되니....
왜 이런 현상이 발생하는 건지 모르겠네요.
그리고 정적으로 연결했고, 함수도 해당 위치에 있고, ldd로 봐도 함수가 잘 연결되어 있는데,
왜 U표시가 붙어있는건지 모르겠네요.
링크할때는
B와 C는
g++ -shared -o libB.so libB.o -lA
g++ -shared -o libC.so libA.o -lA
(libA.so는 /usr/lib에 복사해 놓았습니다.)
해서 링크를 걸어줬는데, 이렇게 하면 안되는건가요??
Forums:
실행 하실때 문제가 아닐까...
정확히 모르겠지만, 혹시 실행하실때 문제가 아닐까 합니다.
U가 나오는것은 문제가 안되는것 같구요.
문제를 간단히 하기위해서 해당 라이브러리를 현 디렉토리에 놓고 테스트 해보세요.
$ LD_LIBRARY_PATH="." ./program
그리고 strace를 사용하시면 문제를 쉽게 해결 할 수 있을것 같습니다.
실행 하실때 문제가 아닐까...
정확히 모르겠지만, 혹시 실행하실때 문제가 아닐까 합니다.
U가 나오는것은 문제가 안되는것 같구요.
문제를 간단히 하기위해서 해당 라이브러리를 현 디렉토리에 놓고 테스트 해보세요.
$ LD_LIBRARY_PATH="." ./program
그리고 strace를 사용하시면 문제를 쉽게 해결 할 수 있을것 같습니다.
댓글 달기