Por que o LD_PRELOAD “v4l1compat.so” não funciona com o Skype de 64 bits? [duplicado]

2

Estou tentando solucionar minha webcam e fazê-la funcionar com o Skype.

Uma solução alternativa que é frequentemente sugerida é LD_PRELOAD o arquivo v4l1compat.so. Mas ao tentar isso, recebo uma mensagem de erro:

fdr@maggie:~$ LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libv4l/v4l1compat.so skype
ERROR: ld.so: object '/usr/lib/x86_64-linux-gnu/libv4l/v4l1compat.so' from LD_PRELOAD cannot be preloaded: ignored.

e tenho certeza de que o caminho está correto:

fdr@maggie:~$ ls /usr/lib/x86_64-linux-gnu/libv4l/v4l1compat.so 
/usr/lib/x86_64-linux-gnu/libv4l/v4l1compat.so

e o kernel e o skype têm arquitetura correspondente:

fdr@maggie:~$ uname -a
Linux maggie 3.2.0-29-generic #46-Ubuntu SMP Fri Jul 27 17:03:23 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
fdr@maggie:~$ dpkg -s skype | grep Architecture
Architecture: amd64

Então, minha pergunta é:

O que está causando a mensagem de erro "... de LD_PRELOAD não pode ser pré-carregado: ignorado"?

    
por fdierre 15.08.2012 / 12:01

1 resposta

4

Eu acho que descobri.

Embora instalado a partir do pacote de 64 bits, o Skype é compilado para 32 bits:

fdr@maggie:~$ file 'which skype'
/usr/bin/skype: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, BuildID[sha1]=0xd6667f895e58d47966d6a572b13125e9110ee256, stripped

Assim, destes dois:

fdr@maggie:~$ locate v4l1compat
/usr/lib/i386-linux-gnu/libv4l/v4l1compat.so
/usr/lib/x86_64-linux-gnu/libv4l/v4l1compat.so

o i386 deve ser usado em LD_PRELOAD.

    
por fdierre 15.08.2012 / 12:13