작동하는 명령이 거의 없음 - 재배치 오류: 기호 __getrlimit, 버전 GLIBC_PRIVATE가 libc.so.6에 정의되지 않음

작동하는 명령이 거의 없음 - 재배치 오류: 기호 __getrlimit, 버전 GLIBC_PRIVATE가 libc.so.6에 정의되지 않음

루트 액세스 권한이 없는 컴퓨터에 SSH를 통해 연결되어 있습니다. 무언가를 설치하기 위해 내 컴퓨터에서 라이브러리를 업로드하여 ~/lib원격 호스트의 디렉토리에 넣었습니다.

이제 내가 실행하는 거의 모든 명령에 대해 아래 오류(예: ls) 또는 Segmentation fault (core dumped)메시지가 표시됩니다.

ls: relocation error: /lib/libpthread.so.0: symbol __getrlimit, version 
GLIBC_PRIVATE not defined in file libc.so.6 with link time reference

내가 성공적으로 실행한 유일한 명령은 cdpwd지금까지입니다. TAB을 사용하여 자동 완성을 하면 디렉터리에서 파일을 찾을 수 있으므로 ls디렉터리 사이를 이동할 수 있습니다.

uname -r또한 Segmentation fault (core dumped)메시지를 반환하므로 사용 중인 커널 버전이 확실하지 않습니다.

답변1

로그인이 가능하기 때문에 큰 문제는 없습니다. 아마도 셸의 시작 스크립트가 에 추가되고 ~/libLD_LIBRARY_PATH잘못된 라이브러리와 함께 ~/lib이것이 보고 있는 문제의 원인일 것입니다.

이 문제를 해결하려면 다음을 실행하세요.

unset LD_LIBRARY_PATH

rm이렇게 하면 등을 실행 하여 vim문제가 있는 라이브러리를 제거하고 적절한 경우 시작 스크립트를 편집할 수 있습니다 .

답변2

glibc문제는 디렉토리 에 사본을 넣었는데 ~/lib해당 라이브러리가 업로드한 시스템과 호환되지 않는다는 것입니다. 라이브러리는 ~/lib에 지정된 대로 참조됩니다 $LD_LIBRARY_PATH.

이 문제를 일시적으로 수정하려면 간단히 말해서 내장된 쉘 unset LD_LIBRARY_PATH처럼 작동합니다 . unset그런 다음 처음에 변수를 설정하는 시작 파일에 있는 내용을 제거하기 위해 즐겨 사용하는 텍스트 편집기를 실행할 수 있습니다.

답변3

Linux Yocto Sumo v4.14에서 찾은 내용은 모든 Linux 커널과 동일해야 합니다.

  • 기본 라이브러리인 /lib와 사용자 포스트 설치 또는 포스트 추가 버전인 /usr/lib에서 두 가지 주요 라이브러리 버전 사이를 교환할 수 있습니다.
  • 이를 위해서는 모든 명령에 대해 LD_LIBRARY_PATH 변수를 설정하기만 하면 됩니다. 또는 처음부터 내보내기를 호출합니다. 즉,
export LD_LIBRARY_PATH=/lib
# now everything should work again since there should 
be a valid backup version of glibc in /lib

# try use a command again 
ls ./

#if this works you can overwrite the broken version of glibc in /usr/lib
cp -faL /lib/libc.so* /usr/lib/
cp -faL /lib/libc-*so* /usr/lib/

#should be optional but for the sake of completeness, as the libc package 
# installs all of the following: 
# direct dependencies and are versioned using 
# the same version number as glibc
cp -faL /lib/ld*.so* /usr/lib/
cp -faL /lib/libdl*.so* /usr/lib/
cp -faL /lib/libm*.so* /usr/lib/
cp -faL /lib/libnsl*.so* /usr/lib/
cp -faL /lib/libnss*.so* /usr/lib/
cp -faL /lib/librt*.so* /usr/lib/
cp -faL /lib/libutil*.so* /usr/lib/
cp -faL /lib/libpthread*.so* /usr/lib/
cp -faL /lib/libcrypt*.so* /usr/lib/
cp -faL /lib/libresolv*.so* /usr/lib/







이것 은 트릭 을 해야 합니다 !

관련 정보