이 질문을 읽어주셔서 감사합니다.
사용하기 위해 커널 모듈을 컴파일하려고 하는데 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로 설정해야 합니다..