미리 컴파일 된 바이너리의 의존성 (특히 glibc 및 libstdC++ 심볼 & 버전)을 확인하는 가장 좋은 방법은 무엇입니까?리눅스에서 바이너리 호환성 결정
각 기계 (고용주 제한)에서 컴파일 할 소스 코드를 제공 할 수 없기 때문에 defacto "각 컴퓨터에서 컴파일하여 호환성을 보장"하는 응답이 적합하지 않습니다. 또한 정적으로 컴파일 된 바이너리를 제공하고 싶지는 않습니다.> 계란을 열기 위해 망치를 사용하는 경우가 많은 것처럼 보입니다.
나는 주위 기호를 결정 느슨하게 센터/내 실행 파일/라이브러리를 도서관 접근 방법 고려한는 다음 ldd -v </path/executable>
또는 objdump -x </path/executable> | grep UND
어떻게 든 확인하기 위해 대상 시스템에 명령을 실행 같은 명령의 사용을 통해 필요 그러한 기호, 라이브러리 및 버전이 제공된 경우 (이 단계를 어떻게 수행하는지 완전히 알 수는 없습니까?). 다음에 올바른 패턴 또는 그 이상이 있는지 확인하기 위해 패턴 또는 심볼 일치가옵니다.
그건 그렇고, 나는 이미이 일이 크게 이루어졌고 나는 지식 갭으로 고통 받고 있다고 생각합니다. 현재 구현되는 방법에 대해 설명합니다.
진행 방법에 대한 의견이나 제안이 있으십니까?
이것은 배포 가이드 라인이나 표준화 된 패키징 방법을 따르지 않을 수도있는 다양한 Linux 배포판 (특히 맞춤형 클러스터)에 내 소프트웨어를 설치하기위한 목적으로 추가해야합니다. 목표는 완벽한 설치입니다.
가능한 중복 : http://stackoverflow.com/questions/4266354/how-to-tell-if-glibc-is-used의 glibc와 stdC++와 관련된 – oakad
GNU 헤더는 해당 버전 매크로를 정의하고있다. 실제로 stdC++를 사용하면 gcc 버전에 의존 할 수 있으며 항상 함께 사용합니다. – oakad
내가 사용하고있는 라이브러리 중 일부는 타사에서 제공하므로 버전 매크로를 내부적으로 검사 할 수있는 소스 액세스 권한이 없습니다. – John