08.01
2011

Se você já tentou rodar uma aplicação 32 bits em uma distribuição 64 bits, provavelmente já se deparou com um erro do tipo:

$ ./smokinguns.x86
./smokinguns.x86: error while loading shared libraries: libXxf86dga.so.1: cannot open shared object file: No such file or directory

O que pode causar estranheza ao ver que você possui essa biblioteca:

$ whereis libXxf86dga.so.1
libXxf86dga.so: /usr/lib/libXxf86dga.so.1 /usr/lib64/libXxf86dga.so.1

Na verdade, você possui essa lib 64 bits, não 32, que é o que a aplicação precisa. As distribuições geralmente possuem pacotes com libs 32 bits, mas esses costumam estar quebrados, faltando determinadas bibliotecas. Você pode ver quais libs um programa precisa e quais você tem com o comando ldd:

$ ldd smokinguns.x86
linux-gate.so.1 => (0xf7741000)
libX11.so.6 => /usr/lib32/libX11.so.6 (0xf7609000)
libXext.so.6 => /usr/lib32/libXext.so.6 (0xf75fb000)
libXxf86dga.so.1 => not found
libXxf86vm.so.1 => /usr/lib32/libXxf86vm.so.1 (0xf75f5000)
librt.so.1 => /lib32/librt.so.1 (0xf75ec000)
libopenal.so.0 => not found
libdl.so.2 => /lib32/libdl.so.2 (0xf75e8000)
libm.so.6 => /lib32/libm.so.6 (0xf75c1000)
libc.so.6 => /lib32/libc.so.6 (0xf747a000)
libxcb.so.1 => /usr/lib32/libxcb.so.1 (0xf7461000)
libXau.so.6 => /usr/lib32/libXau.so.6 (0xf745e000)
libpthread.so.0 => /lib32/libpthread.so.0 (0xf7445000)
/lib/ld-linux.so.2 (0xf7742000)
libXdmcp.so.6 => /usr/lib32/libXdmcp.so.6 (0xf743f000)

No meu caso, preciso da libXxf86dga.so.1 e libopenal.so.0, que podem ser baixadas a partir da busca de pacotes Web da distro. Por exemplo, para o Debian seria o http://packages.debian.org ou http://packages.ubuntu.com, para o Ubuntu. Procure pelo nome (ou parte dele) das libs que faltam na opção que procura o conteúdo dos pacotes para a arquitetura 32 bits:

Buscar por conteúdo dos pacotes

Caso o nome seja diferente, como libopenal.so.0 e libopenal.so.1, você pode renomeá-lo depois de baixar. Depois de baixar todas as libs que faltam, extraia o conteúdo delas. No caso de Debian ou derivada:

$ dpkg -x libopenal1_1.4.272-2_i386.deb .
$ dpkg -x libxxf86dga1_1.0.2-1_i386.deb .

E, como root, copie os arquivos necessários para /usr/lib32/:

# mv libopenal.so.0 /usr/lib32/
# mv libXxf86dga.so.1 /usr/lib32/

Se tudo tiver dado certo, você agora tem todas as bibliotecas necessárias:

$ ldd smokinguns.x86
linux-gate.so.1 => (0xf7793000)
libX11.so.6 => /usr/lib32/libX11.so.6 (0xf765b000)
libXext.so.6 => /usr/lib32/libXext.so.6 (0xf764d000)
libXxf86dga.so.1 => /usr/lib32/libXxf86dga.so.1 (0xf7647000)
libXxf86vm.so.1 => /usr/lib32/libXxf86vm.so.1 (0xf7642000)
librt.so.1 => /lib32/librt.so.1 (0xf7639000)
libopenal.so.0 => /usr/lib32/libopenal.so.0 (0xf72f8000)
libdl.so.2 => /lib32/libdl.so.2 (0xf72f4000)
libm.so.6 => /lib32/libm.so.6 (0xf72cd000)
libc.so.6 => /lib32/libc.so.6 (0xf7186000)
libxcb.so.1 => /usr/lib32/libxcb.so.1 (0xf716d000)
libXau.so.6 => /usr/lib32/libXau.so.6 (0xf716a000)
libpthread.so.0 => /lib32/libpthread.so.0 (0xf7151000)
/lib/ld-linux.so.2 (0xf7794000)
libXdmcp.so.6 => /usr/lib32/libXdmcp.so.6 (0xf714c000)

Nenhum comentário.

Faça seu comentário

Seu comentário