Похоже, проблема на самом деле связана с тем, как скрипт configure для пятой версии 5.0 создает и запускает conftest для библиотеки urlmatch.
Во-первых, ошибка
checking for url_init in -lurlmatch... no
configure: error: liburlmatch not found
несколько вводит в заблуждение: если мы посмотрим на config.log
, мы увидим, что conftest на самом деле не собирается из-за неопределенной ссылки на . ]uncompress
function:
configure:5511: checking for url_init in -lurlmatch
configure:5546: g++ -o conftest -g -O2 -pthread -isystem /usr/include/cairo -isystem /usr/include/glib-2.0 -isystem /usr/lib/x86_64-linux-gnu/glib-2.0/include -isystem /usr/include/pixman-1 -isystem /usr/include/freetype2 -isystem /usr/include/libpng12 -isystem /usr/include/freetype2 -isystem /usr/include/cairo -isystem /usr/include/glib-2.0 -isystem /usr/lib/x86_64-linux-gnu/glib-2.0/include -isystem /usr/include/pixman-1 -isystem /usr/include/freetype2 -isystem /usr/include/libpng12 -fvisibility-inlines-hidden -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_THREAD_SAFE -D_REENTRANT -lz conftest.cpp -lurlmatch -Wl,-Bsymbolic-functions -lfltk_images -lfltk -lX11 >&5
//usr/local/lib/liburlmatch.a(opti_init.o): In function `initbin':
opti_init.c:(.text+0xd6): undefined reference to `uncompress'
collect2: error: ld returned 1 exit status
configure:5552: $? = 1
Это потому, что uncompress
находится в libz
— которая компонуется доliburlmatch
:
. . . -lz conftest.cpp -lurlmatch -Wl,-Bsymbolic-functions -lfltk_images -lfltk -lX11 >&5
не удается соблюдать необходимый порядок ссылок1для двух библиотек. Мы можем проследить это дальше до файла configure.ac
, из которого должен был быть сгенерирован скрипт configure
:
# Checks for libraries.
OLD_LDFLAGS=[$LDFLAGS]
LDFLAGS=["$LDFLAGS -lz"]
AC_CHECK_LIB([urlmatch], [url_init], [], AC_MSG_ERROR([liburlmatch not found]))
LDFLAGS=[$OLD_LDFLAGS]
т.е. вместо добавления в список LIBS
, -lz
добавляется в LDFLAGS
(который чаще используется для указания дополнительных библиотечных путейперед LIBS
).
Быстрый и грязный обходной путь — позвонить по номеру ./configure
с явным аргументом LIBS
:
./configure "LIBS=-lz"
Это приводит к тому, что дополнительный -lz
помещается в командную строку g++
после библиотека urlmatch
(во главе другой LIBS
):
. . . -lz conftest.cpp -lurlmatch -lz -Wl,-Bsymbolic-functions -lfltk_images -lfltk -lX11 >&5
Более постоянным решением может быть изменение файла configure.ac
чтобы добавить -lz
в LIBS
вместо LDFLAGS
, а затем повторно сгенерировать configure
с помощью autoconf
(или autoreconf
при необходимости).
Ссылки:
Вы можете попробовать
device = "sysdefault"
Любое значение для устройства
, которое не является по умолчанию
или не соответствует не начинать с Pulse
сообщает i3status
не использовать PulseAudio и вернуться к alsa . Затем значение напрямую передается в alsa в качестве идентификатора устройства, поэтому просто установка его на alsa
или что-то подобное не сработает.До того, как i3status
поддерживал PulseAudio , вы могли просто установить его на по умолчанию
, чтобы alsa использовал устройство по умолчанию. default
по-прежнему является допустимым именем для устройства alsa . Но i3status
теперь пытается автоматически определить PulseAudio и использовать его вместо alsa , когда устройство настроено на по умолчанию
(или не установлено) ).
Используя sysdefault
, вы можете обойти автоматизм в i3status
, по-прежнему используя допустимое общее имя устройства для alsa .
Если использование systemdefault
по какой-либо причине не работает, возможно, вам придется использовать конкретное имя устройства. Если у вас только одна звуковая карта, hw: 0
должно работать.
device = "hw:0"
Но на современном настольном компьютере «звуковых карт» может быть больше, чем можно было бы ожидать. Помимо «настоящих» встроенных или выделенных звуковых карт, существуют видеокарты (звук для HDMI), веб-камеры, USB-гарнитуры, адаптеры Bluetooth и т. Д.
Вы можете получить список карт в вашей системе из файл / proc / asound / cards
. Например:
0 [PCH ]: HDA-Intel - HDA Intel PCH
HDA Intel PCH at 0xfa120000 irq 41
1 [Nvidia ]: HDA-Intel - HDA Nvidia
HDA Nvidia at 0xd3000000 irq 16
Затем к ним можно получить доступ с именами устройств hw: N
в i3status.conf
, где N
- это номер в первом столбце. .
Если вам нужна дополнительная информация, чтобы решить, какой номер устройства является правильным, вы можете использовать amixer -c N info
( amixer
можно найти в alsa -utils
package):
% amixer -c 0 info
Card hw:0 'PCH'/'HDA Intel PCH at 0xfa120000 irq 41'
Mixer name : 'Realtek ALC262'
Components : 'HDA:10ec0262,103c1587,00100202'
Controls : 41
Simple ctrls : 20
С amixer -c N
вы получаете полный список всех элементов управления микшером и их настроек для карты N
. С помощью amixer -c N sget CONTROL
вы можете получить определенное значение. Таким образом, вы можете использовать amixer -c N sget Master
,чтобы убедиться, что вывод i3status
соответствует фактическим значениям в alsa .