#perl #yocto #lm-sensors
#perl #yocto #lm-датчики
Вопрос:
Я использую Yocto, и в соответствии с требованиями моего проекта мне нужно включить lmsensors
пакет в изображение yocto. Я включил lmsensors
пакет, и я могу запустить sensors
команду, но во время выполнения получаю следующие ошибки sensors-detect
:
Can't locate Fcntl.pm in @INC (you may need to install the Fcntl module)
(@INC contains:
/usr/lib/perl5/site_perl/5.28.1/i686-linux
/usr/lib/perl5/site_perl/5.28.1
/usr/lib/perl5/vendor_perl/5.28.1/i686-linux
/usr/lib/perl5/vendor_perl/5.28.1
/usr/lib/perl5/5.28.1/i686-linux
/usr/lib/perl5/5.28.1
.) at /usr/sbin/sensors-detect line 26.
BEGIN failed--compilation aborted at /usr/sbin/sensors-detect line 26.
(Для удобства чтения добавлены разрывы строк.)
Когда я пытаюсь найти Fcntl.pm
модуль, я вижу, что он присутствует здесь /usr/lib64/perl5/5.28.1/x86_64-linux/Fcntl.pm
.
Вопросы?
- Почему
sensors-detect
не просматриваетlib64
и просматривает толькоlib
(32-разрядные) папки? - Почему
32 bit
Fcntl.pm разве это не генерируется? - Как устранить вышеуказанную ошибку?
Редактировать: я использую multilib
в конфигурации компьютера. Может ли это вызвать эту проблему?
require conf/multilib.conf
MULTILIBS = "multilib:lib32"
DEFAULTTUNE_virtclass-multilib-lib32 = "corei7-32"
Комментарии:
1. Похоже, вы используете 32-разрядный perl.
/usr/lib64/perl5/5.28.1/x86_64-linux/Fcntl.pm
был установлен другимperl
(64-разряднымperl
); это не имеет значения. Что касается того, почему ваш 32-разрядный perl не имеет Fcntl? Этого никогда не должно произойти.2. По-видимому
Fcntl
, модуль представляет собой модуль XS, который устанавливается приperl
установке самого себя (я предполагаю, что он не может быть установлен позже в качестве дополнения). Вот ссылка на источник. Лучший шанс заставить ваши скрипты работать — это переключиться на 64-разрядную версиюperl
, в которой, по-видимомуFcntl
, установлен модуль