ビットフィールドの負の幅'「make」を実行するとき

ビットフィールドの負の幅'「make」を実行するとき

この質問を読んでくれてありがとう。

使用するためにカーネルモジュールをコンパイルしようとしていますが、実行中にsysfs最終make的にこのエラーが発生します。誰かがこのエラーが何を意味するのかを理解するのに役立ちますか?

/usr/src/linux-headers-4.19.0-9-common/include/linux/build_bug.h:29:45: error: negative width in bit-field ‘<anonymous>’
 #define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:(-!!(e)); }))

続いて

/usr/src/linux-headers-4.19.0-9-common/include/linux/kernel.h:1051:3: note: in expansion of macro ‘BUILD_BUG_ON_ZERO’
   BUILD_BUG_ON_ZERO((perms) & 2) +     \
   ^~~~~~~~~~~~~~~~~
/usr/src/linux-headers-4.19.0-9-common/include/linux/sysfs.h:103:12: note: in expansion of macro ‘VERIFY_OCTAL_PERMISSIONS’
    .mode = VERIFY_OCTAL_PERMISSIONS(_mode) },  \
            ^~~~~~~~~~~~~~~~~~~~~~~~
/home/bkkarthik/Workspace/tasks/task09/helloworld.c:76:45: note: in expansion of macro ‘__ATTR’
 static struct kobj_attribute id_attribute = __ATTR(id, 0666, id_show, id_store);

私はLinuxカーネルプログラミングに初めてアクセスし、この状況を評価するためにどのような情報が必要かわかりません。必要に応じて追加情報をお問い合わせください。よろしくお願いします:)

ベストアンサー1

この特別なバグは特に重要ではありません。これは、与えられた値がゼロに決定されたときにビルドを中断するために使用される「トリック」です。ビルドが失敗した理由を理解するには、次のエラーメッセージを調べる必要があります。

注:「BUILD_BUG_ON_ZERO」マクロ拡張時

その後にエラーを引き起こした式が続きます。

あなたの場合、グローバル書き込み可能モード0666を指定したため、ビルドは失敗します。最大0664に設定する必要があります。

おすすめ記事