비트 필드의 음수 너비''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

이 특별한 버그는 특별히 중요하지 않습니다. 이는 주어진 값이 0으로 결정될 때 빌드를 중단하는 데 사용되는 "트릭"입니다. 빌드가 실패한 이유를 이해하려면 다음 오류 메시지를 살펴봐야 합니다.

참고: "BUILD_BUG_ON_ZERO" 매크로 확장 시

그 뒤에 오류를 일으킨 표현식이 옵니다.

귀하의 경우 전역 쓰기 가능 모드 0666을 지정했기 때문에 빌드가 실패합니다.최대 0664로 설정해야 합니다..

관련 정보