Skype 的 LD_PRELOAD 失败

Skype 的 LD_PRELOAD 失败

我尝试在 Ubuntu 13.04 上运行 Skype,当我的网络摄像头与其他应用程序(如 Cheese)一起使用时,得到的是黑色空白而不是我的网络摄像头输入。

传统的解决方案是运行

LD_PRELOAD=/usr/lib/i386-linux-gnu/libv4l/v4l1compat.so /usr/bin/skype

然而,这种方法现在行不通了,

$ LD_PRELOAD=/usr/lib/i386-linux-gnu/libv4l/v4l1compat.so /usr/bin/skype
ERROR: ld.so: object '/usr/lib/i386-linux-gnu/libv4l/v4l1compat.so' from LD_PRELOAD cannot be preloaded: ignored.

$ locate v4l1compat.so
/usr/lib/i386-linux-gnu/libv4l/v4l1compat.so
/usr/lib/x86_64-linux-gnu/libv4l/v4l1compat.so

file `which skype`
/usr/bin/skype: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xe7a4372f77f31bca55d7b0e26422b8901d916e51, stripped

我也尝试过不使用 ld_preloading。为什么 LD_PRELOAD 会失败?其他人有没有成功过?

答案1

使用以下命令启动 skype

LD_PRELOAD=/usr/lib/i386-linux-gnu/libv4l/v4l1compat.so skype

如果这不起作用,请确保先安装 32 位 libv4l-0 包。

您的 Skype 是 32 位版本,因此需要 32 位 libv4l-0 包(即使您的 ubuntu 是 64 位)。如果您没有,请通过以下命令安装。

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libv4l-0:i386

如果您不想在每次启动 Skype 时都输入这个长命令,您应该编辑该/usr/share/applications/skype.desktop文件并在 Exec 行中添加以下内容,使其看起来像这样:

Exec=sh -c 'LD_PRELOAD=/usr/lib/i386-linux-gnu/libv4l/v4l1compat.so skype'

答案2

尝试:

-c 'LD_PRELOAD=/usr/lib/i386-linux-gnu/libv4l/v4l1compat.so skype'

相关内容