lib_alsa не может получить доступ к файлу

#c #fedora

#c #fedora

Вопрос:

Во-первых, спасибо за вашу помощь.

Я должен выполнить проект на c с использованием lib_alsa и portaudio, но когда я выполняю его (с помощью CMake) У меня такая проблема

 ALSA lib conf.c:3956:(snd_config_update_r) Cannot access file /root/.conan/data/libalsa/1.1.9/_/_/package/51e96d1346424f5ef647616231906873cd225eb3/share/alsa/alsa.conf
ALSA lib control.c:1375:(snd_ctl_open_noupdate) Invalid CTL hw:0
ALSA lib conf.c:3956:(snd_config_update_r) Cannot access file /root/.conan/data/libalsa/1.1.9/_/_/package/51e96d1346424f5ef647616231906873cd225eb3/share/alsa/alsa.conf
ALSA lib control.c:1375:(snd_ctl_open_noupdate) Invalid CTL hw:1
babel_client: sources/src/hostapi/alsa/pa_linux_alsa.c:1453: BuildDeviceList: Assertion `devIdx < numDeviceNames' failed.
[1]    17399 abort (core dumped)  ./babel_client 200 200
  

Я не понимаю и не нахожу никаких ответов в Интернете. (Я на fedora 32 (я не знаю, важно ли это xD)) и извините за мой английский, я просто француз: D

Комментарии:

1. Вероятно, вам не следует разрабатывать или запускать программное обеспечение от имени root. Имеет ли этот сеанс доступ к тем же переменным среды, что и ваша обычная учетная запись пользователя?

2. Я не уверен… но я попробовал с помощью sudo, и различий нет

3. Вам нужно запустить его в обычном сеансе рабочего стола пользователя , а не от имени root (не напрямую, не с помощью sudo). «/root/.conan» в вашем сообщении об ошибке говорит мне, что вы, по крайней мере, вызвали conan как root и, вероятно, запускаете свой код как root.

4. я думаю, что я нахожусь в своем обычном пользовательском сеансе ╭─pgmendormi@desktop-u3ems4s ~/blablabla/blabla/bla/build/bin ‹audioClass*› , возможно ли, что pgmendormi не является моим обычным пользовательским сеансом, и я всегда там как корень?

5. Нет, корневой сеанс, вероятно, будет чем-то вроде root@... . Тогда мне интересно, откуда берутся предупреждения conan. Вы запускали conan от имени root или что-то в этом роде?

Ответ №1:

Вы запускались cmake от имени пользователя root. Я уверен, что у вас есть что-то вроде conan_cmake_run(...) запуска conan во время cmake (что здорово).

Но обратите внимание, что conan хранит всю свою базу данных и файл ~/.conan . Если ${USER} это root , то это переходит в защищенный режим чтения и записи /root/.conan , что очевидно из отправляемого вами вывода.

Это не сработает. Запуск cmake (или особенно conan ) НЕ ОТ ИМЕНИ ROOT.

Выполните следующие действия, rm CMakeCache.txt , запустите cmake снова, но НЕ КАК ROOT. Запустите make и ваше приложение.

Я могу потерпеть неудачу по-другому — но лучше.