리눅스 libaaa.so.0 참조를 libaaa.so.10 으로 참조하게 변경하려면 어떻게 해야하나요?
글쓴이: oblab / 작성시간: 목, 2017/01/12 - 10:19오전
리눅스 libaaa.so.0 참조를 libaaa.so.10 으로 참조하게 변경하려면 어떻게 해야하나요?
실행 프로그램을 ldd 를 내용을보면
libaaa.so.0 => not found 라고 나옵니다
libaaa.so.0을 참조하지 못하고 있는상태인데
lib폴더를 보면
libaaa.so.0.3.3
libaaa.so.10(libaaa.so.0.3.3 링크)
이렇게 두개의 파일이 있습니다.
ln 명령을 써서 libaaa.so.0을 만들면 not found 를 해결할수는 있는데요
이 방법말고 참조되는 libaaa.so.0을 libaaa.so.10으로 바꿀수 있는 방법도 있는가요??
Forums:
프로그램은 그대로 냅둔 상태에서요?
프로그램은 그대로 냅둔 상태에서요?
프로그램을 그대로 두거나, 다시 빌드를 하거나
프로그램을 그대로 두거나, 다시 빌드를 하거나 참조라이브러리 명을 바꿀수 있는 방법이 있는가요?
빌드할때 해당이름라이브러리를 참조하라? 이런게 있는지요/
objdump -p libaaa.so.0.3.3 |
objdump -p libaaa.so.0.3.3 | grep SONAME
을 했을 때 libaaa.so.0 라고 나온다면 libaaa.so.0.3.3 을 libaaa.so.0 로 symbolic link 해서 사용하셔도 됩니다.
만약 soname 이 libaaa.so.0 가 아닌 다른 것으로 나온다면,
symbolic link 를 하건 그대로 파일 복사를 해서 이름을 바꾸건 상관없이 로더는 libaaa.so.0 를 "not found" 로 처리하고 실행을 거부합니다.
libaaa 라는 놈이 궁금한데, 아마도 어설프게 만든 놈이거나 설치를 이상하게 하신 듯 합니다.
일반적인 라이브러리라면...
런타임용 패키지에
libaaa.so.0.3.3 , libaaa.so.0.3(libaaa.so.0.3.3 의 링크) , libaaa.so.0 (libaaa.so.0.3.3 의 링크)
개발용 패키지에
libaaa.so , libaaa.a
라는 식으로 포함되고 libaaa.so (그 자체, 혹은 링크된 실제 파일)가 만약 라이브러리라면 libaaa.so.0 라는 soname 을 가지고 있는데요.
댓글 달기