Um arquivo relatado como “não um executável dinâmico” por 'ldd' depende de outras bibliotecas?

8

Apenas certificando-me de que entendi direito - chamo

ldd /path/to/executable

e retorna "não um executável dinâmico". Isso significa que não depende de outras bibliotecas, correto? Se sim, isso significa que pode ser transferido para outra caixa do Ubuntu sem se preocupar com dependências?

    
por Jason 10.12.2012 / 21:40

2 respostas

3

Correto, mas há algo para levar em conta.

Na% man_de% manpage:

% bl0ck_qu0te%     
por Eric Carvalho 10.12.2012 / 21:51
0

@Calmarius está correto, isso acontece se você considerar um exe de 32 bits, mesmo sem bibliotecas básicas de 32 bits.

Eu estou tentando atualizar meu sistema (uma nova instalação do Ubuntu 16.04, a partir de 12.04), eu tenho que instalar um serviço 32bit propitiatory antigo, avserver , que requer ia32-libs (não mais disponível). Isso significa que dpkg e apt-get estão insatisfeitos (o que quer que eu faça, ele me pede para apt-get -f install , e se eu executar isso, ele insiste que eu desinstale o pacote de serviço) e meu serviço não será iniciado.

Para provar que isso é uma falta de bibliotecas de 32 bits, montei meu sistema antigo (Ubuntu 12.04, com ia32-libs e bibliotecas de 32 bits) em /sda2 . Assegurando que /opt (contendo meu binário de 32 bits) seja montado em /sda2/opt , eu posso chroot /sda2 e ldd executar como pretendido.

Para corrigir isso, eu poderia ter instalado manualmente todos os pacotes da biblioteca dependente com: i386 (arch). No entanto, decidi, em vez de tentar descobrir quais eram as minhas dependências, instalei o wine (que é maioritariamente 32bit e assim instala as bibliotecas básicas e uma carga mais que eu realmente não preciso, mas estou bem com isso).

Para corrigir dpkg e apt-get , editei /var/lib/dpkg/status , encontrei o pacote para o meu serviço e removi ia32-libs . Agora dpkg e apt-get estão felizes

Feito isso, ldd relata felizmente: - root@withnail:/opt/<service path># ldd avserver linux-gate.so.1 => (0xf77a6000) libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf778f000) libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf7772000) libuuid.so.1 => /lib/i386-linux-gnu/libuuid.so.1 (0xf776b000) libresolv.so.2 => /lib/i386-linux-gnu/libresolv.so.2 (0xf7752000) libcrypt.so.1 => /lib/i386-linux-gnu/libcrypt.so.1 (0xf7720000) libktssl.so.1.0.0 => /opt/<service path>/libktssl.so.1.0.0 (0xf76cb000) libktcrypto.so.1.0.0 => /opt/<service path>/libktcrypto.so.1.0.0 (0xf756b000) libktz.so.1 => /opt/<service path>/libktz.so.1 (0xf7558000) librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xf754f000) libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xf73d8000) libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf7383000) libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf7366000) libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf71af000) /lib/ld-linux.so.2 (0x565b1000)

    
por sibaz 24.02.2017 / 13:05