因此,我有一个按照以下方式工作的多库设置懒人书说明。我已成功使用 wine 处理 32 位 Windows 程序(即 Skyrim 和 Deus Ex: Human Revolution)。并且我已成功安装和配置 pulseaudio 以用于原生 64 位程序。通常,我会在pulseaudio --kill
使用 wine 之前先终止 pulseaudio,因为当我运行某些程序时,如果没有终止 pulseaudio,则会在启动它的终端中弹出以下内容:
fixme:win:EnumDisplayDevicesW ((null),0,0x33f7d8,0x00000000), stub!
ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: Connection refused
ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: Connection refused
export ARCH=i486
我已经通过在 Slackbook 中的多库页面中添加后解决了以下问题. /etc/profile.d/32dev.sh
。此修复至少使我能够将 json-c 和 speex(slackbuilds.org 上为 pulseaudio 指定的依赖项)编译为 i486 包,然后使用 convertpkg-compat32 将其转换为 compat32 包并安装。
我尝试过推荐的
#。 /etc/profile.d/32dev.sh
在运行之前
sbopkg -b pulseaudio
,但最终得到的软件包仍然是 x86-64 软件包,而不是 i486 软件包。由于 Slackware 的发行版中本身不包含 pulseaudio,Alienbob 的 slackbuilds 存储库中也没有为其编译的版本,因此我找不到可以运行的 32 位二进制软件包converpkg-compat32
。
但是,剩下的问题是,当我使用与编译这些依赖项相同的方法来编译 pulseaudio 时,我得到了以下信息:
daemon/pulseaudio-caps.o: In function `pa_drop_caps':
/tmp/SBo/pulseaudio-5.0/src/daemon/caps.c:85: undefined reference to `cap_init'
/tmp/SBo/pulseaudio-5.0/src/daemon/caps.c:86: undefined reference to `cap_clear'
/tmp/SBo/pulseaudio-5.0/src/daemon/caps.c:87: undefined reference to `cap_set_proc'
/tmp/SBo/pulseaudio-5.0/src/daemon/caps.c:88: undefined reference to `cap_free'
collect2: error: ld returned 1 exit status
make[3]: *** [pulseaudio] Error 1
我通过将 libcap 和 GConf 安装为 compat32 包,然后重新运行 pulseaudio.Slackbuild 脚本(再次在 32dev 环境中使用上述包)解决了以下问题。
这是因为缺少一个库,我仍需要将其作为依赖项安装,而 Slackbuilds.org 上没有提到?这当然不是我第一次遇到这种情况,但通常我的错误在寻找我需要的库时会更有帮助。
安装好 pulseaudio 后,我开始运行winecfg
测试声音(注意:我尝试使用 和 进行测试/usr/bin/pulseaudio --start
,当它们不起作用时,我关闭了服务器并尝试使用/usr/bin/32/pulseaudio --start
。两者的结果相同)。结果错误消息如下:
ALSA lib dlmisc.c:252:(snd1_dlobj_cache_get) Cannot open shared library /usr/lib64/alsa-lib/libasound_module_pcm_pulse.so
ALSA lib dlmisc.c:252:(snd1_dlobj_cache_get) Cannot open shared library /usr/lib64/alsa-lib/libasound_module_pcm_pulse.so
libgcc_s.so.1 must be installed for pthread_cancel to work
我尝试备份 /usr/lib64/alsa-lib/libasound_module_pcm_pulse.so 并在该位置创建指向 /usr/lib/alsa-lib/libasound_module_pcm_pulse.so 的符号链接,以及复制文件,但这些都对出现的错误消息没有任何影响。此外,我尝试将环境变量设置ALSA_MIXER_SIMPLE_MODULES
为/usr/lib/alsa-lib
,仍然无济于事。开始没有主意了。
我知道这是 Slackware 的未知领域,因为大多数用户似乎对使用它不感兴趣,但没有理由说它不可行,我只是好奇是否有人对编译此包有任何明智的建议,以便我可以安装它。如果有人有这种情况的直接经验,那就更好了。
答案1
因此,看起来这个问题的根源在于每一步之后都进行测试winecfg
(这仍然会产生与我编辑的最后一个问题相同的错误)。重要的是,在此过程中,在 wine 中使用 win32 应用程序确实开始起作用了。
我认为对于任何关注这一问题的人来说,相关信息是:
export ARCH=i486
除了使用 之外,在. /etc/profile.d/32dev.sh
使用或运行 .Slackbuild 脚本之前,还必须确保这样做sbopkg -b
。这实际上在 Slackbook 中的说明中有所说明,但似乎很容易忽略(或者至少我个人忽略了),因此我将其包含在这里以防万一。- 除了需要compat32 格式的
json-c
和之外,您还需要 compat32 格式的 和,不过可以通过从 Slackware(而不是 Slackware64)获取这两个包来实现speex
libcap
GConf
镜子在“L”包集中。您还需要alsa-plugins
其他一些包,但这些都应该包含在以下过程中多库Slackbook 中的说明。 - 当然,您需要一个合适的 ALSA 配置文件来处理将内容发送到正确位置。这不是我遇到的问题,但我将在下面包含我工作的 ~/.asoundrc 文件。
- 最后,使用实际的 win32 程序(而不是 winecfg 之类的程序)检查是否一切正常。 Winecfg 仍然会产生我上次在问题中报告的相同错误,并且可以安全地将音频设置设置为“系统默认”,而不会导致问题。 由于 wine 根本不直接支持 pulseaudio,而只是通过 ALSA 兼容层使用它,我认为这种行为没有什么值得担心的。
〜/ .asoundrc
pcm.!default {
type pulse
}
ctl.!default {
type pulse
}
pcm.phononpulse
{
type plug
slave.pcm
{
type pulse
}
hint
{
show on
description "PulseAudio"
}
}
pcm.pulse {
type pulse
hint {
show on
description "PulseAudio"
}
}
无论如何,我希望这对在我之后遇到这个问题的人有一个很好的参考。如果没有,我肯定每次设置新系统时都需要参考它。