/usr/local/lib 내의 라이브러리 버전확인은 어떻게 하나요?

dcmru의 이미지

제목과 같이 /usr/lib나 /usr/local/lib 내의 라이브러리 버전확인은 어떻게 할 수 있나요?

운영체제별로 버전을 보여주는 명령어가 있는 것인가요?

버전을 확인 할려고 하는데, 검색을 해봐도 잘 찾을 수가 없습니다.

eminency의 이미지

버전은 사람이 정하는 것이라서 라이브러리마다 확인하는 방법도 다 다릅니다 -_-;
보통은 라이브러리와 대응되는 헤더 파일 내에 버전 번호에 대한 매크로를 두거나 버전 번호를 출력하는 함수를 두고 있습니다.
따로 실행가능한 어플리케이션이 존재한다면 그걸 실행해서 알 수도 있겠죠(예를 들면 mysql..).

노루가 사냥꾼의 손에서 벗어나는 것 같이, 새가 그물치는 자의 손에서 벗어나는 것 같이 스스로 구원하라 -잠언 6:5

dcmru의 이미지

답변 감사드립니다.

그렇다면 따로 실행 가능한 실행파일로 확인을 해야되는 것이군요.

실행파일이 없다면 헤더파일을 참조해야겠습니다. ^^
----------------
노력만이 살길이다.

노력만이 살길이다.

kihlle의 이미지

objdump 혹은 readelf 를 사용하여 라이브러리의 version확인이 가능합니다.
(ELF헤더를 제대로 구성했을 경우 - SONAME등)

homeless

dcmru의 이미지

프로그램 내에서 확인이 아닌 라이브러리 자체에서의 버전 확인이 가능한지의 질문이었습니다.

그런데 헤더화일로 확인을 한다고해도 컴파일해서 설치한게 아닌 라이브러리를 그냥 복사해서 쓴다면,

어떻게 확인을 해야할까요? ㅡㅡㅋ

----------------
노력만이 살길이다.

노력만이 살길이다.

익명 사용자의 이미지

ldd -V 로 보면 어떤가요(리눅스에서)?

dcmru의 이미지

-v 옵션이 있습니다. 그런데 해당 라이브러리가 참조하는 다른 라이브러리의 풀버전이 나오는군요.

해당라이브러리가 참조하는 라이브러리가 libc 라면

libc.so.6 (GLIBC_2.1.3) => /lib/tls/libc.so.6
libc.so.6 (GLIBC_2.2) => /lib/tls/libc.so.6
libc.so.6 (GLIBC_2.1) => /lib/tls/libc.so.6
libc.so.6 (GLIBC_2.0) => /lib/tls/libc.so.6

이런식으로 나옵니다.
----------------
노력만이 살길이다.

노력만이 살길이다.

ddumbugie의 이미지

#getconf GNU_LIBC_VERSION
glibc 2.8.90

in ubuntu
# which getconf
/usr/bin/getconf

# getconf -a

하게 되면 glibc의 모든 설정들이 다 나타납니다.

hotdigi의 이미지

# getconf -a | grep libc

hotdigi의 이미지

http://leanu.tistory.com/tag/glibc%20%EB%B2%84%EC%A0%84%20%ED%99%95%EC%9D%B8

검색하여 보니, 3가지 방법이 있으니 취향대로 선택하세요 라는 글도 있네요.

# getconf GNU_LIBC_VERSION

# rpm -q glibc

# ls /lib/libc* 후에 육안으로 확인