为什么 LD_PRELOAD“v4l1compat.so”不能与 64 位 Skype 一起使用?

为什么 LD_PRELOAD“v4l1compat.so”不能与 64 位 Skype 一起使用?

可能重复:
从 11.10 升级到 12.04 后 Skype 视频无法使用

我正在尝试排除网络摄像头的故障并使其与 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 无法预加载:忽略”错误消息?

答案1

我想我已经发现了。

尽管从 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。

相关内容