Итак, у меня есть рабочая многобиблиотечная настройка согласнослакбукинструкции. У меня wine успешно работает с 32-битными программами Windows (а именно Skyrim и Deus Ex: Human Revolution). И у меня успешно установлен и настроен pulseaudio для собственных 64-битных программ. Обычно я убиваю pulseaudio с помощью pulseaudio --kill
перед использованием wine, так как когда я запускаю что-то без этого, в терминале, из которого я это запускаю, появляется следующее:
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
как я заметил, что требуется на странице multilib в Slackbook. Исправление позволило мне по крайней мере получить json-c и speex (указанные зависимости для pulseaudio на slackbuilds.org), скомпилированные как пакеты i486, которые я затем преобразовал в пакеты compat32 с помощью convertpkg-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
(которое все еще выдает ту же ошибку, что и с моим последним вопросом редактирования). Важно то, что по ходу дела использование приложения win32 в wine ДЕЙСТВИТЕЛЬНО начало работать.
Я полагаю, что для тех, кто в будущем займется этим вопросом, будет полезной следующая информация:
- Вы ДОЛЖНЫ убедиться, что
export ARCH=i486
в дополнение к использованию. /etc/profile.d/32dev.sh
перед использованиемsbopkg -b
или запуском скрипта .Slackbuild. Это на самом деле указано в инструкциях, найденных в Slackbook, но это, похоже, легко пропустить (или, по крайней мере, я лично пропустил это), поэтому я включаю это здесь на всякий случай. - Помимо необходимости
json-c
иspeex
в форме compat32, вам также понадобятсяlibcap
иGConf
в форме compat32, хотя это можно сделать, взяв оба пакета из Slackware (а не из Slackware64)зеркалов наборе "L" пакета. Вам также понадобитсяalsa-plugins
среди нескольких других пакетов, но все они должны быть включены в процесс следованиямультибиблиотечныйинструкции в Slackbook. - Естественно, вам понадобится подходящий файл конфигурации ALSA для обработки отправки вещей в нужные места. Это не было проблемой, с которой я столкнулся, но я приложу ниже свой рабочий файл ~/.asoundrc.
- И последнее, проверьте, что все работает с настоящей программой win32, а не с чем-то вроде winecfg. Winecfg по-прежнему выдает те же ошибки, о которых я в последний раз сообщал в вопросе, и его можно спокойно оставить с настройками звука "System Default" без возникновения проблем. Поскольку 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"
}
}
В любом случае, я надеюсь, что это послужит хорошей ссылкой для тех, кто придет после меня и столкнется с этой проблемой. Если нет, я уверен, что мне придется ссылаться на это всякий раз, когда я буду настраивать новую систему.