libGL.so.1의 분할 오류

libGL.so.1의 분할 오류

얼마 전 제가 포스팅을 올렸는데요.Debian Wheezy 64비트에서 32비트 애플리케이션 실행

감사해요@JosephR귀찮은 오류 없이 실행할 수 있었습니다 could not find libGL.so.1.

그러나 이제 실행 중에 애플리케이션이 충돌합니다. 충돌 후 터미널에 다음 메시지가 나타납니다.

Aug  2 10:04:16 acs-laptop kernel: [  213.472753] aquaria[7006]: segfault at 8 ip 00000000f41238fb sp 00000000ffceabc0 error 4 in libGL.so.1.2[f4107000+54000]

드라이버를 다시 설치해도 문제가 해결되지 않았으며 문제의 원인이 무엇인지 잘 모르겠습니다. libGL.so64비트 시스템에서 실행되는 32비트 버전에 버그가 있습니까?

답변1

libgl1-mesa-glxOpenGL API의 무료 구현을 설치하고 있습니다 .

종종 독점 드라이버가 자체 바이너리 구현(최적화, 하드웨어 가속)을 제공합니다.

드라이버를 다시 설치했지만(어떻게? 어느?) i386을 찾는 게임 대신 amd64 libGL 버전이 설치될 것입니다(그래서 아무 일도 일어나지 않습니다).

게임이 실행되는 동안 사용 중인 버전을 확인할 수 있습니다. 예를 들면 다음과 같습니다.

grep libGL /proc/$(pidof aquaria)/maps

또는 ldd이전 기사에서 제안한 명령을 다시 사용하십시오.

어쨌든 문제는 게임이 libGL에 구현되지 않은 일부 기능을 사용하고 있거나 예상치 못한 방식으로 기능을 사용하고 있다는 것일 수 있으므로 문제를 이해하는 유일한 방법은 다음과 같습니다.디버그.

패키지를 설치하려고 할 수 libgl1-mesa-glx-dbg:i386있으며 segfault가 발생하면 숫자 대신 일부 함수 이름이 나타날 수 있습니다.

나는 64비트 시스템에서 32비트 바이너리를 디버깅하는 데 이 도구를 사용한 적이 없지만 gdb(확인해 보겠습니다) backtrace시작하는 데 유용할 것입니다.

그래서 만약이것당신이 플레이하고 있는 수족관입니다. 오픈 소스(게임 데이터가 아님)입니다. 즉, 작동시키거나 기본적으로 64비트로 실행되도록 게임을 구축하는 것이 매우 가능하다는 것을 의미합니다.

편집하다

  • 이것원본 저장소입니다
  • 이것십자가
  • 여기포럼에서는 유용한 정보를 제공합니다.읽다새 바이너리 설치 후 cp 스크립트 정보
  • 그리고여기우분투 amd64 및 i386용으로 사전 구축된 패키지입니다. 운 좋게도 deb를 있는 그대로 설치해 보거나 적어도 aquariaamd64에서 실행 파일을 추출할 수 있습니다..deb

이것을 시도해보고 싶다면 ...지원먼저 작업 복사본입니다.

관련 정보