O que significa “dependências diretas não utilizadas”?

1

Ao usar o comando ldd , há uma opção, -u , para

print unused direct dependencies

como indicado na ajuda on-line.

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 são não usados ? Por que elas são dependências ?

    
por sebelk 03.10.2018 / 17:00

1 resposta

3

São dependências porque o binário as lista como dependências, como entradas "NECESSÁRIAS" em sua seção dinâmica:

readelf -d /usr/bin/gcc

mostrará as bibliotecas gcc solicitações.

Eles não são usados porque gcc não precisa de nenhum dos símbolos exportados pelas bibliotecas em questão. No caso de ld-linux-x86-64.so.2 , isso é normal, porque é o intérprete. No caso de libm , isso geralmente resulta de um -lm incondicional, sem correspondente opções de vinculação para descartar bibliotecas não usadas .

Em muitos casos, isso resulta da granularidade limitada das ferramentas de construção; em particular, vincular por exemplo, as bibliotecas do GNOME tende a resultar em longas listas de bibliotecas, que nem sempre são necessárias como dependências diretas (mas acabam na árvore de dependências de bibliotecas). Normalmente, é melhor tentar evitar dependências não utilizadas para simplificar o processamento de dependências (tanto pelo vinculador de tempo de execução quanto pelas ferramentas de gerenciamento de pacotes). É seguro ignorar libm , já que isso está vinculado a libc .

    
por 03.10.2018 / 17:13