라이브러리가 설치되어 있는지 확인하는 방법?


167

리눅스에서 라이브러리가 설치되어 있는지 어떻게 확인합니까? (물론 명령 줄에서).

필자의 경우에는 libjpeg가 설치되어 있는지 확인하고 싶습니다.


어떤 배포판을 사용하고 있습니까?
반경

답변:


210

distro-independent * 방식으로이를 수행하려면 다음과 같이 grep과 함께 ldconfig를 사용할 수 있습니다.

ldconfig -p | grep libjpeg

libjpeg가 설치되어 있지 않으면 출력이 없습니다. 설치되어 있으면 사용 가능한 각 버전에 대한 줄이 표시됩니다.

libjpeg를 원하는 라이브러리로 바꾸십시오. 라이브러리 가용성을 확인하는 일반적인 배포와 무관 한 * 방법이 있습니다.

어떤 이유로 ldconfig의 경로가 설정되지 않은 경우 일반적으로 전체 경로를 사용하여 경로를 호출 할 수 있습니다 /sbin/ldconfig.

** 99 %의 시간 *


2
이것은 답변으로 받아 들여 져야합니다. 큰!

1
라이브러리의 개발자 버전 (헤더)을 확인하기 위해 이것을 사용할 수는 없습니다.
andig

2
99 % 시간 을 지정할 수 있습니까 ? bash: ldconfig: command not foundxfce로 데비안 x64 Jessie에서! 이것은 데비안 웹 사이트에서 권장되는 데비안 릴리즈입니다 ...
Tomáš Zato

4
수퍼 유저없이 실행하려고하면 @ TomášZato : ldconfig를 사용할 수 없습니다 ( command not found표시됨).
Gauthier

2
/sbin/ldconfig -p뿌리가 될 필요없이 나를 위해 일합니다.
Pedro Gimeno

34

배포판의 패키지 관리자 (attitude, yum, ...)를 통해 확인할 수 있지만 배포판을 제공하지 않았으므로 올바른 명령을 제공 할 수 없습니다.

gcc -ljpeg'ld : -ljpeg에 대한 라이브러리를 찾을 수 없음'이 표시되면 다른 방법으로 실행할 수 있습니다 . '정의되지 않은 기호' : "_main", 참조 : ... 'libjpeg가 발견되었음을 의미합니다.

locate libjpeg; ls /usr/lib/libjpeg*; ls /lib/libjpeg* lib가 시스템에 설치되어 있는지 확인하는 다른 방법입니다.

더 많은 컨텍스트를 제공하면 (libjpeg가 설치되어 있는지 확인해야하는 이유), 특정 상황에 가장 적합한 솔루션을 제공 할 수 있습니다.


적성을 사용하여 찾는 방법?
BBK

17

whereis 유틸리티를 사용 합니다.

견본:

l1feh4ck3r@xxx:~$ whereis libjpeg
libjpeg: /usr/lib/libjpeg.so /usr/lib/libjpeg.a /usr/lib/libjpeg.la

11

나는 이것을 사용한다 :

gcc -lpng

lib가 설치되면 다음과 같은 결과가 나타납니다.

undefined reference to 'main'

lib가 설치 되지 않은 경우 :

cannot find -lpng

9

deb 기반 배포의 경우 다음을 수행 할 수 있습니다.

dpkg -s packagename

또는 파일 이름 만 알고 있다면

locate filename

파일 이름은 일반적으로 libsomething.so [.version]입니다.


1
파일 이름은 정적 버전의 "libsomething.a"와 같은 파일 일 수도 있습니다.
반경

내가 찾을 수 dpkg -s는 라이브러리 자체에서 미묘하게하거나 현저하게 다를 수 있습니다 실제 패키지 이름을 원하기 때문에, 유틸리티 제한. 저는 다음을 사용합니다dpkg -s|grep LIBRARY
Drew Stephens

2
@dinomite apt 파일은 당신의 친구입니다 :)
반경

4

Redhat 기반 시스템에서는 pkg-config를 사용하여 라이브러리가 설치되어 있는지 여부를 확인할 수 있습니다. 많은 rpm 바이너리는 실제로 설치를 진행하기 전에 동일한 검사를 수행하므로 그 정확성에 합리적으로 의존 할 수 있습니다.

pkg-config --cflags jpeg

pkg-config --libs jpeg

pkg-config --cflags "jpeg >= 1.0.0" # for version check
pkg-config  --modversion jpeg | awk -F. '{ printf "0x%02X%02X%02X\n",$1,$2,$3 }' #version check


1

dpkg를 사용하여 설치되어 있는지 확인할 수도 있습니다.

dpkg --list | grep [some_key_words_of_your_lib]

게다가 CentOS에서는 이것을 시도 할 수 있습니다.

rpm -qa [lib_name]


참고 : 데비안 기반 배포판에 대해서만 작동합니다.
ALex_hha

@ALex_hha 예, 감사합니다.이 점을 강조해야합니다. CentOS 또는 Red Hat 기반 시스템에서는 pkg-config대신 사용하십시오.
Scott Yang
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.