Ao usar o ldd
comando existe uma opção, -u
, para
imprimir dependências diretas não utilizadas
conforme indicado na ajuda online.
Por exemplo:
ldd -u /bin/gcc
Unused direct dependencies:
/lib64/libm.so.6
/lib64/ld-linux-x86-64.so.2
O que são "dependências diretas não utilizadas"? Por que eles não são utilizados ? Por que são dependências ?
São dependências porque o binário as lista como dependências, como entradas “NEEDED” em sua seção dinâmica:
gcc
irá mostrar-lhe os pedidos de bibliotecas .Eles não são usados porque
gcc
não precisam de nenhum dos símbolos exportados pelas bibliotecas em questão. Nold-linux-x86-64.so.2
caso do , isso é normal, porque esse é o intérprete. Nolibm
caso de , isso geralmente resulta de um incondicional-lm
, sem opções de vinculador correspondentes para descartar bibliotecas não utilizadas .Em muitos casos, isso resulta da granularidade limitada das ferramentas de compilação; em particular, vincular, por exemplo , bibliotecas do GNOME, tende a resultar em longas listas de bibliotecas, que nem sempre são todas necessárias como dependências diretas (mas acabam na árvore de dependências de biblioteca de qualquer maneira). Geralmente, é melhor tentar evitar dependências não utilizadas, para simplificar o processamento de dependências (pelo vinculador de tempo de execução e pelas ferramentas de gerenciamento de pacotes). É seguro ignorar
libm
, já que isso está vinculado delibc
qualquer maneira.