为什么LD_PRELOAD“v4l1compat.so”不能与64位Skype一起使用?
可能重复:
从11.10升级到12.04后,Skypevideo无法正常工作
我正在尝试对我的网络摄像头进行故障排除,并使其与Skype一起使用。
经常建议的一种解决方法是LD_PRELOAD v4l1compat.so文件。 但是在尝试时,我收到一条错误消息:
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.
我相信路径是正确的:
fdr@maggie:~$ ls /usr/lib/x86_64-linux-gnu/libv4l/v4l1compat.so /usr/lib/x86_64-linux-gnu/libv4l/v4l1compat.so
并且内核和skype具有匹配的架构:
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
所以我的问题是:
是什么导致“……来自LD_PRELOAD无法预加载:忽略”错误信息?
我想我发现了。
虽然从64位软件包安装,但Skype编译为32位:
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
因此,这两个:
fdr@maggie:~$ locate v4l1compat /usr/lib/i386-linux-gnu/libv4l/v4l1compat.so /usr/lib/x86_64-linux-gnu/libv4l/v4l1compat.so
必须在LD_PRELOAD中使用i386。