所以,我有一個有效的多庫設置,按照懶書指示。我讓 wine 成功地與 32 位元 Windows 程式(即 Skyrim 和 Deus Ex:人類革命)一起工作。我已經成功安裝了pulseaudio,並為本機64位元程式進行了配置。通常情況下,我會在pulseaudio --kill
使用 wine 之前先殺死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
此後,我透過. /etc/profile.d/32dev.sh
在 Slackbook 的 multilib 頁面上新增我注意到的所需內容來解決以下部分。該修復至少使我能夠將 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
除了使用 .Slackbuild 腳本之外,您還必須確保在使用或執行 .Slackbuild 腳本. /etc/profile.d/32dev.sh
之前sbopkg -b
。這實際上在 Slackbook 中的說明中有所說明,但似乎很容易錯過(或者至少我個人錯過了),因此我將其包含在此處以防萬一。- 除了需要compat32 形式的
json-c
and之外,您還需要 compat32 形式的and ,儘管可以透過從 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"
}
}
無論如何,我希望這對那些追隨我並遇到這個問題的人來說是一個很好的參考。如果沒有,我確信每當我設定新系統時都需要參考它。