시나리오 : (gcc가있는 Linux에서) C++ 프로젝트 빌드가 새 시스템에서 반복되는 것으로 가정됩니다.Linux/gcc : 빌드가 다른 머신의 이전 빌드와 동일한 지 확인하는 방법이 있습니까?
매우 동일한 gcc 버전을 빌드에 사용하는 경우 : 빌드 출력 (바이너리)이 동일합니까? 또는 바이너리에 포함 된 타임 스탬프, 경로 또는 다른 정보가 다른 것입니까? 출력이 동일하지 않은 경우 : 출력이 바이너리가 "기능적"입니까 동일한 지 비교할 수 있습니까? 나는. 디버그 정보와 같은 메타 데이터가없는 바이너리 내부의 실제 코드를 비교하는 도구를 호출 할 수 있습니까?
동기 부여 : 소프트웨어 시스템 (누군가 다른 사람이 개발했으며, X라고 부름)이 만들어 져야하는 깨끗한 새 Linux 시스템을 준비해야합니다. 소프트웨어를 빌드하기 위해 빌드 스크립트, 메이크 파일 등을 포함한 소스 트리를 얻을 것입니다. 이제 빌드 출력이 X에서 제공 한 마지막 빌드와 동일하다는 것을 확인해야합니다. 넘겨 줄 소스가 X에서 바이너리 형식으로 얻은 마지막 버전을 빌드하는 데 사용 된 것과 동일해야합니다.
2 개의 파일에서'objdump -d FILE' 명령의 출력의'diff' 명령을 사용하여 차이를 비교해 보았습니까? – Oliv
최종 목표는 무엇입니까? 이진 호환성, 또는 기능적 정확성? 전자는 ABI의 일종에 동의 할 필요가 있습니다. 후자는 체계적인 테스트가 전부라고 생각합니다. –
@MassimilianoJanes :이 문제의 동기를 설명하기 위해 질문을 편집했습니다. – DrP3pp3r