Na maioria dos casos, você pode usar ldd
para determinar as bibliotecas nas quais um executável está vinculado.
Por exemplo:
# ldd /usr/bin/xz
linux-vdso.so.1 (0x00007fff06358000)
liblzma.so.5 => /lib64/liblzma.so.5 (0x00007fd6a1358000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fd6a1138000)
libc.so.6 => /lib64/libc.so.6 (0x00007fd6a0d88000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd6a1590000)
Agora, se eu quisesse, poderia copiar essas bibliotecas em um caminho personalizado. No seu caso, parece que você pretende colocá-los no diretório do aplicativo. No entanto, você precisa dizer ao sistema para procurar lá, já que procurar no diretório do aplicativo não é um comportamento padrão ao carregar bibliotecas. E como o carregamento acontece antes do aplicativo ser iniciado, o aplicativo não pode alterar esse comportamento.
Para isso, você precisa usar LD_LIBRARY_PATH
. Apenas faça LD_LIBRARY_PATH=/foo/bar /foo/bar/appname
. Isto irá dizer ao ld-linux para olhar em /foo/bar
para as bibliotecas.
Exceção:
Observe que ldd
mostrará apenas as bibliotecas nas quais o aplicativo está vinculado. Também é possível que os programas carreguem bibliotecas em tempo de execução. Esse não é um comportamento muito comum e é usado principalmente como um tipo de sistema de plug-in, ou para manter a memória ocupada baixa por não carregar bibliotecas a menos que sejam realmente necessárias (talvez conforme determinado pela configuração).