2017-11-17 28 views
2

사과이 SO보다 더 많은 서버 오류이지만,이 너무 간다 코딩 관련이 있는지 ... 이전 버전

나는이 사람이 내가 RHEL 7 컴파일하려고 다른 사람의 코드 만 이진 호환성을 유지 RHEL 6에서 (적어도 지금은) 실행될 것입니다. RPM 파일을 작성하고 출력하기 위해 내 자신의 RPM 스펙 파일을 작성했습니다. RPM은 RHEL 6과 RHEL 7 모두에서 제대로 빌드되지만 RHEL 7에서 빌드 할 때 GLIBC 버전으로 인해 RHEL 6에 설치할 수있는 RPM을 생성하지 않습니다.

결과로 얻은 바이너리가 이전 버전의 GLIBC에 만족하고 RHEL 6에 설치 될 수 있도록 어딘가에 추가 할 수있는 간단한 스위치가 있습니까?

분명히 현재 RHEL 7 바이너리가 필요하지는 않지만 RHEL 7 dev 환경에서 RHEL 6을 컴파일 할 수 있기를 바랍니다.

+0

짧은 대답은 "아니오"입니다. UNIX는 "최신 빌드, 오래된 버전 실행"컴파일 모델을 지원하지 않습니다. 'chroot'를 사용하거나 크로스 컴파일러를 만들어야합니다. 가장 간단한 솔루션은 지원하려는 가장 오래된 시스템 (아마도 VM 내부)을 기반으로 구축하는 것입니다. –

답변

1

Red Hat Enterprise Linux 7 시스템에서 mock (슬프게도 EPEL에서만)을 사용하여 Red Hat Enterprise Linux 6 chroot를 생성 할 수 있습니다. Tier 1 ABI와 호환되는 라이브러리 만 사용하는 경우 애플리케이션은 재 컴파일없이 Red Hat Enterprise Linux 7에서 계속 실행됩니다. 가장 오래된 지원 릴리스 (응용 프로그램 관점에서)를 빌드하는 것이 실제로이 작업을 수행하는 유일한 방법입니다. 보다 최신의 C++ 컴파일러가 필요하며 이것이 Red Hat Enterprise Linux 7을 기반으로하는 이유이기 때문에 DTS (Developer Toolset)를 대신 사용해보십시오.

티어 1 라이브러리는 Application Compatibility Guide에 설명되어 있습니다. 이전 패키지 목록과 PDF 첨부 파일이 있어야하지만 지금은 액세스 할 수 없습니다.

+0

답변 해 주셔서 감사합니다. 어쨌든 별도의 RHEL 6 빌드 서버가 있으므로 내 CD 시스템의 빌드를 대상으로해야합니다. – Chris