공유 라이브러리 링크 시간 참조 재배치 오류

공유 라이브러리 링크 시간 참조 재배치 오류

저는 ARM 시스템에서 맞춤형 Ångström 기반 Linux 배포판을 사용하고 있습니다. 패키지 관리자에서 찾은 모든 패키지가 최신 버전이 아니었기 때문에 몇 가지 예외를 제외하고 찾을 수 있는 모든 소프트웨어를 다시 빌드했습니다. 이제 모든 소프트웨어가 최신 상태입니다. 일반적으로 모든 것이 잘 작동하지만 설치된 소프트웨어를 업데이트하는 데 몇 가지 문제가 있습니다.

예를 들어 이전에는 OpenSSL 1.0.2l을 사용했고 최근에는 OpenSSL 1.0.2n을 빌드하고 설치했습니다. 빌드 및 설치 프로세스는 원활하게 진행되었지만 OpenSSL 공유 라이브러리를 사용하는 일부 애플리케이션이 작동을 멈춘 것은 실망스럽습니다. 내가 알아차린 것에는 컬(curl)과 PHP가 포함됩니다. 다음은 영향을 받는 응용 프로그램의 예입니다.

$ curl
curl: try 'curl --help' for more information
curl: relocation error: /usr/lib/libcurl.so.4: symbol SSL_COMP_free_compression_methods, version OPENSSL_1.0.0 not defined in file libssl.so.1.0.0 with link time reference

저는 Beyond Linux from Scratch 지침에 따라 OpenSSL 1.0.2n(및 그 이전의 1.0.2l)을 빌드했습니다(여기). 여기에는 패치 파일을 ld 스크립트에 적용하여 버전 제어 정보를 추가하는 작업이 포함됩니다. 영향을 받는 프로그램에 대한 오류 메시지에 언급된 모든 기호는 패치에 의해 추가되었으므로 패치가 뭔가 문제를 일으켰다고 의심하게 됩니다.

영향을 받은 각 프로그램을 다시 빌드하면 오류가 해결될 수 있음을 발견했습니다. 예를 들어, 설치된 새 버전의 OpenSSL(최신 버전도 사용 가능)을 사용하여 컬을 다시 빌드했는데 이제 컬이 작동합니다. 영향을 받은 모든 프로그램을 다시 빌드할 의향이 있지만, 이것이 애초에 공유 라이브러리를 사용하는 목적을 완전히 무너뜨린다는 생각이 들었습니다.

이 버그는 BLFS 페이지에 표시된 패치로 인해 발생합니까? 패치 없이 OpenSSL을 재구축하고 OpenSSL에 의존하는 프로그램을 재구축하면 나중에 OpenSSL 업데이트가 있을 경우 종속 프로그램을 재구축할 필요가 없게 됩니까?

관련 정보