디버깅을 시도하는 동안 , 및 과 같은 ldd <executable>
라이브러리가 많이 표시되는 것을 발견했습니다 . 반면에 a는 동일한 라이브러리 세트를 표시하지 않습니다.libldap_r
libkrb5
libroken
rabin2 -l <executable>
링크나 함수 호출의 ldap 문자열에 대한 소스 디렉터리를 살펴봤지만 표시되지 않습니다. 이는 어쨌든 이러한 라이브러리를 연결해서는 안 된다는 의미입니다. 이러한 라이브러리가 사용되고 있는지 확인하려면 어떻게 해야 합니까?
답변1
rabin2 -l
바이너리의 직접적인 종속성을 보여줍니다.즉그것들은 바이너리 자체에 나열되어 있습니다. ldd
바이너리에 대해 완전히 해결된 종속성 트리를 표시합니다(가능한 경우). 여기에는 전이적 종속성이 포함됩니다. 따라서 바이너리가 자체적으로 필요하고 필요한 경우 및 만 liba
나열 되고 libb
4 개의 라이브러리 가 모두 표시 됩니다 (사용 가능한 경우).liba
libd
libe
rabin2 -l
liba
libb
ldd
새 종속성이 식별되지 않을 때까지 첫 번째 바이너리의 종속성을 나열한 다음 각 개별 종속성의 종속성을 나열하여 ldd
결과를 수동으로 일치시킬 수 있습니다.rabin2 -l
라이브러리가 실제로 사용되는지 확인하려면 ltrace
관심 있는 모든 시나리오에서 바이너리를 사용할 수 있습니다. 이는 호출되는 라이브러리 함수를 식별합니다. 일부 라이브러리의 사용은 구성에 따라 달라집니다. 예를 들어 Kerberos 라이브러리는 Kerberos가 구성된 경우에만 사용될 수 있습니다.
당신은 또한 볼 수 있습니다ldd 및 rpm -q --필요.