최신 버전의 raspios를 설치했습니다. 여기에 uname -a Linux raspberrypi 6.1.21+ #1642 Mon Apr 3 17:19:14 BST 2023 armv6l GNU/Linux가 있습니다.
V4l2loopback을 git clone하고 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
구글링을 해보니 대부분의 오류는 32비트에서 64비트 나누기를 할 때 발생하는 것으로 나타났습니다. 코드를 살펴보고 64비트 분할 인스턴스를 찾았습니다. 이를 do_div()로 바꾸려고 시도했지만 소용이 없었습니다. 이렇게 하면 다른 오류가 많이 발생합니다. 이 문제를 어떻게 해결합니까?
답변1
잘못된 대상 컴퓨터에 대해 컴파일하고 있을 수 있습니다. 정확히 무엇을 하고 있는지, 크로스 컴파일을 하는지, RPi에서 어떻게 컴파일하는지, 그리고 "리눅스 헤더를 얻기" 위해 정확히 무엇을 하는지 아는 것은 불가능합니다.
하지만:
수동으로 빌드할 필요는 없습니다. 데비안으로 패키지되어 있으므로 최소한 패키지를 통해 사용할 수 있어야 합니다 v4l2loopback-dmks
.