このソースをクロスコンパイルすると、あるホストで「ターゲットを作成するルールなし」エラーが発生しますが、他のホストでは発生しません。

このソースをクロスコンパイルすると、あるホストで「ターゲットを作成するルールなし」エラーが発生しますが、他のホストでは発生しません。

次の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-sama5d27GAホストで次のエラーが発生します。

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/firmwareGitHub Action Runnerでは失敗します。

追加の証明書を含める必要がない場合は、この構成設定が空になるように上書きする必要があります。これを行うと/lib/firmware

追加の証明書が必要な場合は、カーネルストアのレプリカ(例えば firmware)の横にある()を指すようにlinux変更します。CONFIG_CFG80211_EXTRA_REGDB_KEYDIR../firmware

おすすめ記事