데비안의 LD_LIBRARY_PATH

데비안의 LD_LIBRARY_PATH

나는 방금 여기의 조언을 따랐습니다.

CentOS 6.5에서 glibc를 2.14로 업데이트하는 방법

Android 관련 프로그램에서 glibc-2.29에 대해 불평하고 있습니다.

모든 것이 컴파일된 것으로 보이며 이제 /opt폴더 내에서 새로 설치된 라이브러리의 폴더를 볼 수 있습니다.

$ ls /opt/glibc-2.29/
bin  etc  include  lib  libexec  sbin  share  var

그러나 다시 시작한 후에도 원래 프로그램은 여전히 ​​오류 메시지를 생성합니다.

.....because /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found

내가 생각하는 솔루션의 마지막 줄은 다음과 같습니다.

export LD_LIBRARY_PATH="/opt/glibc-2.14/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"

Centos 6에서는 작동하지만 Debian에서는 작동하지 않을 수 있습니다. 재부팅 후 입력 하면 env | grep LD아무것도 찾지 못합니다. 방금 내역을 확인하고 실행하기 전에 2.14를 2.29로 변경했습니다.

저는 데비안 10.4 Buster를 실행하고 있습니다. 이 작업을 수행하는 방법이나 결함을 찾는 방법에 대한 아이디어가 있습니까?

고쳐 쓰다:

필요한 프로그램이 오류를 없애기 전에 동일한 터미널 창에서 LD_LIBRARY_PATH를 내보내는 마지막 줄을 실행하면 해당 터미널의 모든 것이 종료됩니다. 심지어 ls내가 입력한 내용에 관계없이 메모리 액세스 오류를 반환하는 경우도 있습니다. 터미널을 닫는 것 외에는 할 수 있는 일이 없습니다. 데비안은 LD 경로가 이렇게 변경되는 것을 정말 좋아하지 않는 것 같습니다.

답변1

맹목적으로 glibc를 변경하고 모든 것이 원활하게 작동할 것이라고 기대할 수는 없습니다. 2.14를 기대하는 프로그램은 2.14를 계속 사용해야 하지만 2.29를 기대하는 프로그램은 이를 사용하도록 설정할 수 있습니다.

이것을 설정하면 LD_LIBRARY_PATH링커에게 라이브러리를 찾을 위치를 알려줍니다. 2.29를 2.14와 동일시하면 링커는 이전 프로그램을 새 라이브러리와 연결하려고 시도하지만 결과는 만족스럽지 않습니다.

다행히 LD_LIBRARY_PATH필요한 실행 파일만 설정할 수 있으며 그 다음에는 다른 항목에는 영향을 주지 않습니다.

LD_LIBRARY_PATH=/opt/glibc-2.29/lib /path/to/my/program

관련 정보