시스템 공유 라이브러리를 식별하는 방법은 무엇입니까?

시스템 공유 라이브러리를 식별하는 방법은 무엇입니까?

내 소프트웨어 도구에는 일부 외부 종속성이 있습니다. 나는 그것을 다음과 같이 배포한다.콘다미리 컴파일된 종속성이 있는 linux64용 패키지(공유 라이브러리 포함) 안타깝게도 소프트웨어 관련 라이브러리에서 시스템 라이브러리를 식별하는 방법을 모르겠습니다. 나는 이와 같은 라이브러리 배포는 libc필요하지 않으며 심지어 피해야 한다고 생각합니다. 왜냐하면 다른 Linux 배포판에는 일부 시스템 라이브러리의 특정 버전이 있을 수 있기 때문입니다.

저는 공유 라이브러리를 내보내기 위해 이 간단한 oneliner를 사용하고 있습니다(원천):

$ ldd file | grep "=> /" | awk '{print $3}' | xargs -I '{}' cp -v '{}' /destination

예를 들어 Tesseract 소프트웨어의 공유 라이브러리는 다음과 같습니다.

$ ldd tesseract.bin 
linux-vdso.so.1 =>  (0x00007ffff4bc7000)
libtesseract.so.4 => not found
liblept.so.5 => not found
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f0ad8bf3000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f0ad89dc000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f0ad8615000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f0ad830a000)
/lib64/ld-linux-x86-64.so.2 (0x0000563cf6115000)

보시다시피 libtesseract.so.4및 만은 liblept.so.5소프트웨어 관련 라이브러리입니다( 에 없기 때문에 찾을 수 없음 LD_LIBRARY_PATH).

그렇다면 시스템 공유 라이브러리를 식별할 수 있는 방법이 있습니까?에 있는지 확인할 수 있지만 /lib이것이 항상 올바른가요? 다른 곳에 있을 수 없도록 시스템 라이브러리만 있습니까?

관련 정보