![이 소스를 크로스 컴파일할 때 한 호스트에서는 "대상을 만드는 규칙 없음" 오류가 발생하지만 다른 호스트에서는 발생하지 않는 이유는 무엇입니까?](https://linux55.com/image/211096/%EC%9D%B4%20%EC%86%8C%EC%8A%A4%EB%A5%BC%20%ED%81%AC%EB%A1%9C%EC%8A%A4%20%EC%BB%B4%ED%8C%8C%EC%9D%BC%ED%95%A0%20%EB%95%8C%20%ED%95%9C%20%ED%98%B8%EC%8A%A4%ED%8A%B8%EC%97%90%EC%84%9C%EB%8A%94%20%22%EB%8C%80%EC%83%81%EC%9D%84%20%EB%A7%8C%EB%93%9C%EB%8A%94%20%EA%B7%9C%EC%B9%99%20%EC%97%86%EC%9D%8C%22%20%EC%98%A4%EB%A5%98%EA%B0%80%20%EB%B0%9C%EC%83%9D%ED%95%98%EC%A7%80%EB%A7%8C%20%EB%8B%A4%EB%A5%B8%20%ED%98%B8%EC%8A%A4%ED%8A%B8%EC%97%90%EC%84%9C%EB%8A%94%20%EB%B0%9C%EC%83%9D%ED%95%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
다음 Linux 커널 소스 코드 저장소를 몇 가지 다른 호스트(내 로컬 컴퓨터 및 Github Actions 러너)에 복제했습니다.
https://gitlab.conclusive.pl/devices/linux/-/tree/master
나는 사용하고있다kstr-sama5d27 defconfig
빌드 모듈을 사용할 때 make modules -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LOCALVERSION=-kstr-sama5d27
GA 호스트에서 다음 오류가 발생합니다.
make[2]: *** 'net/wireless/extra-certs.c'에 필요한 '/lib/firmware' 대상을 생성하는 규칙이 없습니다. 멈추다.
그리고 내 로컬 컴퓨터에서는 빌드가 성공합니다.
GEN net/wireless/extra-certs.c
CC [M] net/wireless/extra-certs.o
net/wireless/Makefile을 살펴봤지만 이 문제를 해결하는 방법에 대한 아이디어를 제공하는 것이 없습니다.
이 문제는 빌드 환경의 차이로 인해 발생한다고 생각합니다.
답변1
이 때문입니다CONFIG_CFG80211_EXTRA_REGDB_KEYDIR
로 설정합니다 /lib/firmware
. 이 구성 항목이 비어 있지 않으면 빌드가 발생합니다.의지하다extra-certs.o
, 그 자체구성 값으로 제공된 디렉터리에 따라 다름. 따라서 빌드는 자신의 시스템에서는 성공하지만 /lib/firmware
GitHub Action Runner에서는 실패합니다.
추가 인증서를 포함할 필요가 없으면 이 구성 설정이 비어 있도록 재정의해야 합니다. 이렇게 하면 /lib/firmware
.
추가 인증서가 필요한 경우 커널 저장소 복제본(예를 들어 firmware
) 옆에 있는 ( )를 가리키도록 linux
변경합니다 .CONFIG_CFG80211_EXTRA_REGDB_KEYDIR
../firmware
답변2
Github Actions 러너에는 /lib/firmware
Linux 배포판과 같은 패키지 펌웨어가 포함되어 있지 않은 것 같습니다.
Stephen Kitt의 답변은 추가 인증서가 필요하지 않은 상황에 적합합니다. 이러한 인증서가 정말로 필요한 경우 펌웨어를 가져와 해당 인증서에 대한 구성을 지정해야 합니다.
복제를 통해 펌웨어를 얻을 수 있습니다.
git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
기존 펌웨어를 덮어쓰는 것을 방지하기 보다는 펌웨어를 디렉터리에 저장하는 것이 좋습니다 /lib/firmware
(Github Actions에서는 문제가 되지 않는 것 같습니다).