"make debug"를 명령 줄에서 실행할 수 있도록 노력 중이며 -DDEBUG_OUTPUT 정의를 사용하여 드라이버 모듈을 빌드하므로 특정 코드 섹션이 생성됩니다Linux 2.6 드라이버 모듈 makefile에서 디버그 타겟 만들기
2.4 커널 메이크 파일에서 이것은 매우 쉽습니다. 난 그냥 디버그를 만들 : 대상 및 "- DDEBUG_OUTPUT"해당 타겟에 대한 참조 컴파일 명령 인수에 포함되어 있습니다. 쉬운.
불행히도 (나를 위해), 2.6 완전히 모듈을 컴파일하는 방식이 바뀌었고 컴파일시 사용자 정의 정의를 표시하지 않는 사소한 "all"및 "clean"예제 만 찾을 수 있습니다.
나는이 시도 :debug:
make -C $(KERNEL_DIR) SUBDIRS='pwd' -DDEBUG_OUTPUT modules
및 메이크업에서 불만을 얻었다.
나는 또한 시도했다 :
.PHONY : 디버그하지만 EXTRA_CFLAGS에 포함 된 내용을보고하지 않는
debug:
make -C $(KERNEL_DIR) SUBDIRS='pwd' EXTRA_CFLAGS="$(EXTRA_CFLAGS) -DDEBUG_OUTPUT" modules
. 명령 줄 출력에서 -D를 include dir에 대해 -I를 포함하는 기존 EXTRA_CFLAGS에 올바르게 추가한다는 것을 알 수 있습니다. 그러나 드라이버 파일은 include dir을 찾을 수 없기 때문에 지금 컴파일되지 않습니다 ... 그래서 어떻게 든 EXTRA_CFLAGS에 포함 된 내용을 볼 수 없습니다.
좋아, 할 수 있지만, "make"대신 "make debug"를 원할 경우 EXTRA_CFLAGS를 조건부로 해당 값으로 설정하는 방법은 무엇입니까? 디버그 대상 아래에 EXTRA_CFLAGS 할당을 직접 시도했지만 EXTRA_CFLAGS에 명령이 없습니다. – Rob
디버그 타겟으로 답을 수정했습니다. – Mircea
도움을 주신 Mircea에게 감사드립니다. 그 문자열을 거기에 넣겠지만 드라이버 파일은 EXTRA_CFLAGS의 -I로 지정된 include dir에있는 .h 파일이 누락되었다고 주장하기 때문에 컴파일되지 않습니다. 즉, EXTRA_CFLAGS = make 명령의 일부를 사용하면 make가 EXTRA_CFLAGS의 -I 부분을 볼 수 없게됩니다. 나는 그것을 원래 게시물에 추가했다. –
Rob