리눅스의 모든 shared object 리스트를 만들려면??
글쓴이: tyolee83 / 작성시간: 목, 2008/04/24 - 2:35오후
배포판에 관계없이
.so 파일들의 리스트를 만들어야 할 상황인데요...
/lib 과 /usr/lib을 하위 디렉토리까지 뒤지면 될것 같다는 생각은 드는데...
혹시 다른곳에도 .so 파일이 존재하기도 하나요??
(사용자가 만든것은 제외)
그리고 이걸 스크립트로 짜야할 것 같은데
스크립트는 다뤄본적이 없어서 어떻게 해야 할지 모르겠네요...
도움좀 부탁드립니다.
Forums:
#!/bin/sh ls -alR /lib/*.so
#!/bin/sh
ls -alR /lib/*.so > so_list.txt
ls -alR /usr/lib/*.so >>so_list.txt
이정도면 안될려나요 ? ㅡ.ㅡ;;;
/lib과 /usr/lib 말고
/lib과 /usr/lib 말고 다른데를 뒤질 필요는 없는건가요??
//TODO
# cd / # find . -name "*.so"
# cd /
# find . -name "*.so" > so_list.txt
가 더 나을듯 보이는군요.
하지만, 정말 로드된(캐쉬된) 시스템의 공유 라이브러리를 알고 싶으시면
# ldconfig -p
이걸로도 충분하지 싶습니다.
時日也放聲大哭
時日也放聲大哭
파일이 많은
파일이 많은 시스템이라면
find의 시간이 너무 오래 걸리지는 않을까요??
//TODO
find는 첫 답글이
find는 첫 답글이 얘기한 ls와 질문글에서 얘기한 의외의 곳에서 사용된 오브젝트에 대한 요구사항을 다 포함한 사용법일 뿐입니다.
실제 시스템에서 인식되는 공용 동적 라이브러리(so file)은
ldconfig -p
이 명령어 하나로 사실은 다 만족되는 겁니다.
결과적으로, 시스템에서 로드되는 동적 라이브러리의 path는 /etc/ld.conf 에 의해 정의되고, 정의된 path에 존재하는 라이브러리는 위 명령어에 의해 전부 추출됩니다.
find 예시는 결국 첫답글에 대한 부족분을 얘기할 뿐이고, 시스템 상의 공유 오브젝트에 대한 답은 ldconfig -p 라는 얘기죠.
時日也放聲大哭
時日也放聲大哭
locate db가
locate db가 생성되어있다는 가정하에...
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
so 파일에도 버전이 있는데...
위에 있는 방법대로 하면
예를들어
libstdc++.so.6와
libstdc++.so.5를
구분할 수 있는 방법이 없네요...
이 둘은 구분되어야 하는 라이브러리 인데...
so.? 이렇게 주면
그냥 .so로 끝나는 파일들이 안걸리고...
간단할거라고 생각했는데 생각보다 어렵네요;;
도움 부탁드립니다.
//TODO
얘시를
예시를 들겠습니다.
시스템에 libncurses.so.6이 있고, libncusses.so.5가 있다고 할때
# gcc -o test test.c -lncurses
라고 한다면 어떻게 될까요?
답은, libncurses.so가 어떤 파일에 심볼릭 링크되어 있냐 라는 겁니다.
대체적으로 하위 호환성을 유지하게 때문에, 시스템상에 있는 라이브러리의 so.?가 중요한게 아니라 .so가 결과라는것을 알 수 있습니다.
정말, 원하는 답이 무엇인가... 라는게 중요하죠.
시스템이 결과적으로 로드하고 있는 공유 라이브러리인가? 아니면, 설치되어 있는(참조조차 되지 않는 라이브러리까지 포함하는) 모든 라이브러리를 찾고자 하는 것인가? 하는 것이죠.
時日也放聲大哭
時日也放聲大哭
답변 감사드립니다.
제가 사용하려는 목적이
ldconfig -p
의 결과와 딱 맞아 떨어지네요.
답변 감사드립니다 :)
//TODO
댓글 달기