#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
и ваше приложение.
Я могу потерпеть неудачу по-другому — но лучше.