〜/.asoundrc

〜/.asoundrc

所以,我有一個有效的多庫設置,按照懶書指示。我讓 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 應用程式確實開始工作了。

我想對任何人來說,相關資訊是:

  1. export ARCH=i486除了使用 .Slackbuild 腳本之外,您還必須確保在使用或執行 .Slackbuild 腳本. /etc/profile.d/32dev.sh之前sbopkg -b。這實際上在 Slackbook 中的說明中有所說明,但似乎很容易錯過(或者至少我個人錯過了),因此我將其包含在此處以防萬一。
  2. 除了需要compat32 形式的json-cand之外,您還需要 compat32 形式的and ,儘管可以透過從 Slackware(而不是 Slackware64)取得這兩個套件來完成此操作speexlibcapGConf鏡子在「L」套裝中。您還需要alsa-plugins一些其他軟體包,但這些都應該包含在遵循以下過程中多庫Slackbook 中的說明。
  3. 當然,您需要一個合適的 ALSA 設定檔來處理將內容傳送到正確的位置。這不是我遇到的問題,但我將在下麵包含我的工作 ~/.asoundrc 檔案。
  4. 最後,檢查是否與實際的 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"
    }
}

無論如何,我希望這對那些追隨我並遇到這個問題的人來說是一個很好的參考。如果沒有,我確信每當我設定新系統時都需要參考它。

相關內容