답변:
/usr/lib/.build-id
설치된 패키지의 기본 빌드 ID 파일을 포함합니다. Fedora 27 이전에는이 파일들이에서 디버그 파일과 함께 살았으며 /usr/lib/debug
디버그 RPM으로 만 제공되었습니다. Fedora 27에서는 여러 디버그 정보 패키지를 병렬로 설치할 수 있도록 변경되었습니다 . 이러한 변경의 일부는 설치된 바이너리와 일치하도록 일치하는 패키지에 기본 빌드 ID 파일을 제공하는 것입니다.
디버그 정보 패키지는 많은 배포판에서 사용되어 사용자가 필요에 따라 모든 사용자를 위해 바이너리를 팽창시키지 않고 디버깅 정보를 설치할 수있는 방법을 제공합니다. 프로그램이나 라이브러리가 빌드되고 링크 될 때, 디버깅 정보로 빌드 될 수 있으며, 디버거는 바이너리의 위치를 소스 코드의 위치와 매핑하는 데 사용할 수 있습니다. 그러나이 정보는 많은 공간을 차지합니다. 따라서 디버깅 정보는 일반적으로 바이너리에서 패키징되기 전에 제거됩니다. 최근 몇 년 동안, strip
그리고 objcopy
디버그 정보 패키지 구축 방법이 - 디버깅 정보를 추출하여 별도로 저장 될 수 있도록하는 것이 향상되었습니다. 필요한 것은 바이너리와 디버그 정보가 일치하고 빌드 ID가 들어오는 곳입니다.ld
--build-id
바이너리의 중요한 부분을 살펴보십시오 . "주 빌드 ID 파일"은 빌드 ID에서 해당 바이너리 또는 디버그 정보 파일로의 심볼릭 링크입니다. 그것들은 양방향 매핑을 구현할 수 있도록하여 코어 덤프가 유용하게 디버깅 될 수 있도록합니다 (이진에서 이진 자체의 빌드 ID 로의 .gnu_debuglink
섹션에 링크가 있습니다). Fedora build-id 기능 설명 에서이 모든 이유에 대한 자세한 설명을 볼 수 있습니다.
rpm --query --file /usr/lib/.build-id
"소유하는"수많은 패키지를 나열합니다/usr/lib/.build-id
.