dkms 安装 v4l2loopback-dc/2.1.2 失败

dkms 安装 v4l2loopback-dc/2.1.2 失败

在使用更新我的 Archlinux 软件包时_ packman -Syu,我发现 dkms 无法安装模块:

(11/23) Install DKMS modules
==> dkms install --no-depmod v4l2loopback-dc/2.1.2 -k 6.8.5-arch1-1
Error! Bad return status for module build on kernel: 6.8.5-arch1-1 (x86_64)
Consult /var/lib/dkms/v4l2loopback-dc/2.1.2/build/make.log for more information.
==> WARNING: `dkms install --no-depmod v4l2loopback-dc/2.1.2 -k 6.8.5-arch1-1' exited 10
==> dkms install --no-depmod v4l2loopback/0.13.1 -k 6.8.5-arch1-1
==> depmod 6.8.5-arch1-1
(12/23) Updating TeXLive filename database...

在日志文件中(已翻译):

DKMS make.log for v4l2loopback-dc-2.1.2 for kernel 6.8.5-arch1-1 (x86_64)
Tue 16 Apr 2024 07:56:42 +03
make -C /lib/modules/6.8.5-arch1-1/build M=/var/lib/dkms/v4l2loopback-dc/2.1.2/build modules
make[1]: enter directory "/usr/lib/modules/6.8.5-arch1-1/build"
   CC [M] /var/lib/dkms/v4l2loopback-dc/2.1.2/build/v4l2loopback-dc.o
/var/lib/dkms/v4l2loopback-dc/2.1.2/build/v4l2loopback-dc.c: In the "vidioc_querycap" function:
/var/lib/dkms/v4l2loopback-dc/2.1.2/build/v4l2loopback-dc.c:622:3: error: implicit function declaration 'strlcpy'; did you mean "strscpy"? [-Werror=implicit-function-declaration]
   622 | strlcpy(cap->driver, "Droidcam", sizeof(cap->driver));
       | ^~~~~~~
       | strscpy
cc1: some warnings are considered errors
make[3]: *** [scripts/Makefile.build:243: /var/lib/dkms/v4l2loopback-dc/2.1.2/build/v4l2loopback-dc.o] Error 1
make[2]: *** [/usr/lib/modules/6.8.5-arch1-1/build/Makefile:1921: /var/lib/dkms/v4l2loopback-dc/2.1.2/build] Error 2
make[1]: *** [Makefile:240: __sub-make] Error 2
make[1]: exit from the directory "/usr/lib/modules/6.8.5-arch1-1/build"
make: *** [Makefile:8: all] Error 2

这是 v4l2loopback 源代码中的错误还是错误的依赖项?谢谢

答案1

这是由于strlcpy()Linux 6.8.x 中所有内核用户切换到strscpy().通常,“外部”用户(树外内核模块)可能会因此类更改而滞后一些。

机器人摄像头v4l2loopback-dc确实在 2.1.3 版本中修复了这个问题,并于 2024 年 3 月 26 日提交:

版本2.1.3

使用 strscpy 而不是 strlcpy。
Linux 6.8 已删除 strlcpy。

所以你必须等待 Archlinux 选择版本 2.1.3 或应用修补你自己。

相关内容