Debian

執行“make”時位域“<anonymous>”的負寬度

  • June 23, 2020

感謝您閱讀這個問題。

我試圖編譯一個適用於 的核心模組,sysfs在執行時make我遇到了這個錯誤。有人可以幫我理解這個錯誤的含義嗎?

/usr/src/linux-headers-4.19.0-9-common/include/linux/build_bug.h:29:45: error: negative width in bit-field ‘&lt;anonymous&gt;’
#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

引用自:https://unix.stackexchange.com/questions/594504