ldd는 연결된 라이브러리 세트를 표시하지만 rabin2 -l을 사용하면 다르게 표시됩니다. 왜 이런 일이 발생합니까?

ldd는 연결된 라이브러리 세트를 표시하지만 rabin2 -l을 사용하면 다르게 표시됩니다. 왜 이런 일이 발생합니까?

디버깅을 시도하는 동안 , 및 과 같은 ldd <executable>라이브러리가 많이 표시되는 것을 발견했습니다 . 반면에 a는 동일한 라이브러리 세트를 표시하지 않습니다.libldap_rlibkrb5librokenrabin2 -l <executable>

링크나 함수 호출의 ldap 문자열에 대한 소스 디렉터리를 살펴봤지만 표시되지 않습니다. 이는 어쨌든 이러한 라이브러리를 연결해서는 안 된다는 의미입니다. 이러한 라이브러리가 사용되고 있는지 확인하려면 어떻게 해야 합니까?

답변1

rabin2 -l바이너리의 직접적인 종속성을 보여줍니다.그것들은 바이너리 자체에 나열되어 있습니다. ldd바이너리에 대해 완전히 해결된 종속성 트리를 표시합니다(가능한 경우). 여기에는 전이적 종속성이 포함됩니다. 따라서 바이너리가 자체적으로 필요하고 필요한 경우 및 만 liba나열 되고 libb4 개의 라이브러리 가 모두 표시 됩니다 (사용 가능한 경우).libalibdliberabin2 -llibalibbldd

새 종속성이 식별되지 않을 때까지 첫 번째 바이너리의 종속성을 나열한 다음 각 개별 종속성의 종속성을 나열하여 ldd결과를 수동으로 일치시킬 수 있습니다.rabin2 -l

라이브러리가 실제로 사용되는지 확인하려면 ltrace관심 있는 모든 시나리오에서 바이너리를 사용할 수 있습니다. 이는 호출되는 라이브러리 함수를 식별합니다. 일부 라이브러리의 사용은 구성에 따라 달라집니다. 예를 들어 Kerberos 라이브러리는 Kerberos가 구성된 경우에만 사용될 수 있습니다.

당신은 또한 볼 수 있습니다ldd 및 rpm -q --필요.

관련 정보