升级到 11.10 后 Skype 不再可用。我收到以下错误:
skype: symbol lookup error: skype: undefined symbol: _ZN5QFile3mapExxNS_14MemoryMapFlagsE
尝试从Skype以及来自 Ubuntu 软件中心。
答案1
这不是一个完整的答案,但至少是一个解决方法:
从命令行运行 skype,手动确保它指向 i386 库:
LD_LIBRARY_PATH=/usr/lib/i386-linux-gnu/ /usr/bin/skype
这是假设您已经安装了 skype:i386 包(听起来您已经安装了)。
我仍然找不到真正的解决方案,但可能会根据机器的不同而有所不同......
该问题与当前向多架构的过渡有关(允许在同一安装中使用不同架构的库 - 例如 i386 和 amd64。)
从 Ubuntu 软件中心安装的 skype 是 skype:i386,需要链接到 i386 版本的库。我怀疑它在某个地方加载了 amd64 库而不是 i386 版本。(也许是旧软件包遗留的损坏安装,或者是包装不良的第三方产品?)
我要
答案2
我遇到了同样的问题并按照此链接中的解释解决了:
/usr/lib32
就我而言,在 中发现了一些错误版本的 libQt/usr/lib/i386-linux-gnu
。我猜是因为一些非常老的 skype 安装需要强制安装一些 32 位库。为了验证它是否也适用于你,请在终端中执行以下操作
ldd /usr/bin/skype | grep Qt libQtDBus.so.4 => /usr/lib/i386-linux-gnu/libQtDBus.so.4 (0xf7569000) libQtGui.so.4 => /usr/lib/i386-linux-gnu/libQtGui.so.4 (0xf6aa3000) libQtNetwork.so.4 => /usr/lib/i386-linux-gnu/libQtNetwork.so.4 (0xf6967000) libQtCore.so.4 => /usr/lib/i386-linux-gnu/libQtCore.so.4 (0xf66c5000) libQtXml.so.4 => /usr/lib/i386-linux-gnu/libQtXml.so.4 (0xf626d000)
验证所有 qt 库是否在 中找到
/usr/lib/i386-linux-gnu/
,而不在 中找到/usr/lib32
。如果您在 /usr/lib32 中发现一些库,我建议您备份它们并将其从 /usr/lib32 中删除,然后验证ldd /usr/bin/skype | grep Qt
现在找到它们
/usr/lib/i386-linux-gnu/
简而言之,问题是 skype 在 /usr/lib32 中发现了一些过时的旧 libQt* 库,而不是随 i386 版本的 libQt 安装的库。这些旧库可能是为了让旧 skype 正常工作而安装的
答案3
这也为我解决了问题。我运行的是 Ubuntu 11.10 64 位,并安装了 64 位 Skype deb 包。查询 Skype 使用的 Qt 库时,我注意到 /opt/google/earth 中的 Google Earth 安装中使用了大约 3 个库:
$ ldd /usr/bin/skype | grep Qt
libQtDBus.so.4 => /usr/lib/i386-linux-gnu/libQtDBus.so.4 (0xf7564000)
libQtGui.so.4 => /opt/google/earth/free/libQtGui.so.4 (0xf6af9000)
libQtNetwork.so.4 => /opt/google/earth/free/libQtNetwork.so.4 (0xf69cd000)
libQtCore.so.4 => /opt/google/earth/free/libQtCore.so.4 (0xf66d2000)
libQtXml.so.4 => /usr/lib/i386-linux-gnu/libQtXml.so.4 (0xf627a000)
从命令行运行
LD_LIBRARY_PATH=/usr/lib/i386-linux-gnu/ /usr/bin/skype
强制使用目录中的库i-386-linux-gnu
并成功启动Skype。
为了让 Unity / Dash 启动器正常工作,我相应地修改了 Exec 行。这样就无需使用终端来启动应用程序。
/usr/share/applications
在从命令行启动的 gedit 窗口中编辑 Skype 启动器$ gksu gedit
[超级用户模式]
然后更换
Exec=skype
经过
Exec=env LD_LIBRARY_PATH=/usr/lib/i386-linux-gnu/ /usr/bin/skype
这样 Skype 就可以从 Ubuntu 11.10 中的 Unity / Dash 启动
答案4
我通过以下方式修复了 Ubuntu 14.04 LTS 上的 skype 启动和音频问题:
要从终端运行 Skype:将其指向 i386 库,如下所示
LD_LIBRARY_PATH=/usr/lib/i386-linux-gnu/ PULSE_LATENCY_MSEC=30 /usr/bin/skype 要从 Dash 启动 Skype:编辑文件“/usr/share/applications/skype.desktop”
sudo YOUR_FAVORITE_EDITOR_HERE /usr/share/applications/skype.desktop
更改此行
Exec=env PULSE_LATENCY_MSEC=60 skype %U 至
Exec=env PULSE_LATENCY_MSEC=30 LD_LIBRARY_PATH=/usr/lib/i386-linux-gnu/ skype %U 注意:我将脉冲延迟从 60 更改为 30 以使音频正常工作,并添加了 LD_LIBRARY_PATH
据报道,该功能仍适用于 Ubuntu 14.04。