아래와 같이 필수 동반 공유 라이브러리가 실패하는 이유는 무엇입니까?

아래와 같이 필수 동반 공유 라이브러리가 실패하는 이유는 무엇입니까?

데비안 프로그램은 일반적으로 공유 라이브러리/종속성에 뒤처지기 때문에 자격을 갖춘 공유 라이브러리와 함께 사용하면 작동해야 합니다. 즉, Arch 프로그램/패키지와 같이 OS 롤링/빠른 업데이트를 기반으로 한 동일한 최신 업데이트를 사용하면 됩니다.

그러니 모든 패키지 파일을 데비안 OS 자체로 복사하세요. 예를 들어 프로그램은 다음과 같습니다.광밍닷컴, 그 부서. 에게 복사/usr/local/lib

그러나 이를 요구하는 동반 공유 라이브러리가 이런 방식으로 실패하는 이유는 무엇입니까?

$ LD_LIBRARY_PATH=/usr/local/lib xbright =5

xbright: relocation error: /usr/local/lib/libc.so.6: symbol _dl_audit_symbind_alt version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference

좋은 정보로 클리어, 실패

$ xbright =5
  xbright: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by xbright)

도와주세요. 예상대로 작동하게 하려면 어떻게 해야 합니까?

답변1

동적 링커도 C 라이브러리의 일부이므로 복사해야 합니다. /lib64/ld-linux-x86-64.so.2Arch가 가리키는 위치를 확인 하고 복사한 /usr/local/lib다음 다음을 실행하여 제대로 작동하는지 확인합니다.

LD_LIBRARY_PATH=/usr/local/lib /usr/local/lib/ld-2.34.so xbright =5

( ld-2.34.so적절한 이름으로 바꾸십시오).

다음을 사용하여 기본적으로 이 인터프리터를 사용하도록 바이너리를 설정할 수 있습니다 patchelf.

patchelf --set-interpreter /usr/local/lib/ld-2.34.so /usr/local/bin/xbright

항상 설정할 필요가 없도록 지정하도록 RPATH설정할 수도 있습니다 .xbright/usr/local/libLD_LIBRARY_PATH

patchelf --set-rpath /usr/local/lib /usr/local/bin/xbright

관련 정보