Debian
執行“make”時位域“<anonymous>”的負寬度
感謝您閱讀這個問題。
我試圖編譯一個適用於 的核心模組,
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 核心程式比較陌生,我不知道您需要什麼資訊來評估這種情況。如果需要,請隨時詢問更多資訊。提前致謝 :)
這個特定的錯誤並不是特別重要,如果給定的值被確定為零,它是一個用來破壞建構的“技巧”。要了解建構失敗的原因,您需要查看下一條錯誤消息,其中應包括
注意:在宏“BUILD_BUG_ON_ZERO”的擴展中
後跟導致錯誤的表達式。
在您的情況下,建構失敗是因為您指定了一個全域可寫模式 0666;你應該最多設置 0664。