공유 라이브러리를 로드하는 중 오류가 발생했습니다. 파일이 너무 짧음

공유 라이브러리를 로드하는 중 오류가 발생했습니다. 파일이 너무 짧음

저는 CentOS 7 워크스테이션에서 작업하고 있습니다. Rstudio를 설치했는데 최근까지 잘 작동했습니다. 하지만 이제 시작하려고 하면 다음 http://localhost:8787/과 같은 오류가 발생합니다.Unable to connect to service

R이 터미널에서 제대로 작동하는지 확인했는데 다음과 같은 오류가 발생했습니다.

/usr/lib64/R/bin/exec/R: error while loading shared libraries: /lib/libgcc_s.so.1: file too short

다음 명령을 사용하여 R을 다시 설치하려고 하면 sudo yum install R -y다음과 같은 응답을 받습니다.

Package R-3.5.2-2.el7.x86_64 already installed and latest version
Nothing to do

어떻게 해야 하나요?

답변1

가 손상되었습니다 .so.

일반적으로 다음 명령을 실행하여 해당 패키지가 속한 패키지를 찾습니다.

yum provides \*/<so_file>

귀하의 경우:

$ yum provides \*/libgcc_s.so.1
[...]
libgcc-4.4.6-4.el6.i686 : GCC version 4.4 shared support library
Repo : base
Matched from:
Filename : /lib/libgcc_s.so.1
[...]

이 경우 우리 libgcc-4.4.6-4.el6.i686는 다른 버전을 원합니다.

해당 패키지를 다시 설치해야 합니다.

yum reinstall libgcc-<version>.i686

답변2

ld : error : myfile: file too short내 경우에는 다음과 같은 결과를 얻었습니다 .

ld: warning: myfile has a section extending past end of file
ld : error : myfile: ELF section name out of range

소스 코드와 바이너리 blob이 모두 포함된 폴더를 Nix용으로 패치하고 있었기 때문입니다. 패치할 파일 수가 많았기 때문에 스크립트를 사용하여 동시에 패치했습니다( find및 사용 sed -i). 불행하게도 sed이진 파일에도 적용되어 완전히 손상되었습니다.

objdump -a myfile패치 전후에 인쇄를 하면서 깨달았습니다 (두 번째 경우에는 오류가 발생합니다).

관련 정보