感谢您阅读这个问题。
我试图编译一个与 一起使用的内核模块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。