2016-09-20 3 views
0

RHEL 7에 gcc 4.7을 사용하여 빌드 된 라이브러리가 있습니다. 다음이 가능합니까RHEL 7에서 컴파일 된 실행 바이너리 RHEL 6의 gcc 4.7

1) Can the binary be executed in RHEL 6 host without re-compiling ? 

2) The shared objects produced in RHEL 7 hosts with gcc 4.7 be used 
on a RHEL 6 with gcc 4.4 compiler ? 

여기에있는주의 사항은 무엇입니까?

답변

1

당신이 정적 바이너리를 연결하지 않을 경우, 문제가 공유 될 라이브러리 :

GCC는 일반적으로 C 프로그램을 링크 :

  • glibc - C 런타임 라이브러리의 구현입니다. RHEL 6과 7은 해당 라이브러리의 버전이 다릅니다. glibc는 기호 태그, 즉 :

    [email protected]:/tmp> readelf -s /lib64/libc.so.6 | grep ' [email protected]' 
    1679: 00000000000d8a70 90 FUNC WEAK DEFAULT 12 [email protected]@GLIBC_2.2.5 
    

    그래서 만약 RHEL6에 존재하는 새로운 태그가 기능 링크 프로그램이, 당신이 당신의 프로그램을 실행할 수 없습니다를 사용합니다.
  • libgcc_s

    은 대부분 하드웨어 플랫폼에서 사용할 수없는 기능이 포함 된 GCC 런타임 (즉, 32 비트 바이너리 64 비트를 long long 연산을 지원하지 않습니다, 그래서 그들은 할 것을하는 라이브러리를 필요로), 그것은 보인다 넣어 선택적 일 수 있습니다.

마지막으로 GCC 4.4 및 4.7에는 호환 가능한 ABI가 있으므로 다른 컴파일러로 인해 문제가 발생하지 않아야합니다.

0

Red Hat Developer Toolset에 포함 된 GCC 컴파일러를 사용하는 경우 RH는 주요 RHEL 버전에서 컴파일 된 응용 프로그램이 +1 버전에서도 실행됨을 보증합니다 (예 : RHEL 6에서 컴파일하고 RHEL 6 또는 RHEL 6에서 실행). 7.

가 V4는, 그러나 또한 GCC 5, 6

작업이 http://developers.redhat.com/products/developertoolset/overview/이 앞으로 호환성 작업을 수행하는 방법

+0

를 참조하십시오? 라이브러리가 정적으로 링크되어 있다는 의미입니까? –