![在树莓派书虫上编译 V4L2loopback 时出现问题](https://linux22.com/image/227338/%E5%9C%A8%E6%A0%91%E8%8E%93%E6%B4%BE%E4%B9%A6%E8%99%AB%E4%B8%8A%E7%BC%96%E8%AF%91%20V4L2loopback%20%E6%97%B6%E5%87%BA%E7%8E%B0%E9%97%AE%E9%A2%98.png)
我安装了最新版本的raspios,这里是uname -a Linux raspberrypi 6.1.21+ #1642 Mon Apr 3 17:19:14 BST 2023 armv6l GNU/Linux
我 git 克隆了 V4l2loopback 并在获取 linux 头文件后尝试编译。我收到以下错误。
Building v4l2-loopback driver...
make -C /lib/modules/`uname -r`/build M=/home/pi/v4l2loopback KCPPFLAGS="-DSNAPSHOT_VERSION='"0.12.7-412-g850a2e3"'" modules
make[1]: Entering directory '/usr/src/linux-headers-6.1.21+'
CC [M] /home/pi/v4l2loopback/v4l2loopback.o
MODPOST /home/pi/v4l2loopback/Module.symvers
ERROR: modpost: "__aeabi_ldivmod" [/home/pi/v4l2loopback/v4l2loopback.ko] undefined!
make[2]: *** [scripts/Makefile.modpost:126: /home/pi/v4l2loopback/Module.symvers] Error 1
make[1]: *** [Makefile:1964: modpost] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-6.1.21+'
make: *** [Makefile:53: v4l2loopback.ko] Error 2
我用 google 搜索发现,当你在 32 位上进行 64 位除法时,大多数错误都会出现。我查看了代码,发现了 64 位除法的实例,我尝试用 do_div() 替换它,但无济于事。当我这样做时,我遇到了一大堆其他错误。你如何解决这个问题?
答案1
您可能正在为错误的目标机器进行编译。不可能知道你具体在做什么,是否交叉编译它,或者你如何在 RPi 上编译它,以及你到底做了什么来“获取 linux 头文件”。
然而:
您不必手动构建它,它是由 debian 打包的,因此至少应该可以通过包使用v4l2loopback-dmks
。