문제

내 Linux 시스템 (Fedora 9)의 모든 표준 공유 라이브러리는 elfosabi_none (0)을 Osabi로 지정합니다.

이것은 괜찮습니다. 그러나 ELF 헤더에 제공된 OSABI가 Elfosabi_linux (3) 인 공급 업체로부터 공유 라이브러리를 받았습니다.

이것은 그렇지 않습니다 소리 Linux 시스템을위한 공유 라이브러리에 대한 불합리한 값처럼, 그러나 다른 라이브러리와 다른 모든 라이브러리와는 다른 값이므로 다른 라이브러리 중 하나에서 dlopen ()을 사용 하여이 라이브러리를 열려고 할 때 "ELF 파일 OS ABI가 잘못된"오류로 실패합니다.

FreeBSD 유틸리티를 컴파일했습니다 브랜드 폴드 .C 오사비 유형을 0으로 변경하는 데 사용했으며 이제 라이브러리 보인다 다른 모든 것들로 잘 연주합니다.

나는 단지 궁금합니다 - 왜이 도서관이 elfosabi_linux로 표시되어 있다고 생각합니까? 아마도 그들이 다른 시스템에서 컴파일을 교차 하고이 값이 엘프 헤더로 설정된 GCC 플래그를 지정했을 것 같아요? 비슷한 것을 달성하려고했지만 적절한 GCC 플래그 나 플래그를 결정할 수 없었습니다.

이 특정 공급 업체가 많은 손을 잡고 있지 않으면 서 아무것도하지 않기 때문에 원인이 무엇인지 알고 싶습니다. 우리가 그들을 배달 한 후에 ".

도움이 되었습니까?

해결책

아마도 공급 업체는 FreeBSD에서 크로스 컴파일하거나 STT_GNU_IFUNC를 사용하는 모든 것이 elfosabi_linux로 표시되는 매우 최근의 Fedora 시스템을 사용하고 있습니다. Linux에서 그것을 사용하려고한다면 당신이 한 것처럼 Elfosabi_none으로 변경하는 데 아무런 문제가 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top