[리눅스][커널] 전처리 파일 추출 방법
글쓴이: AustinKim / 작성시간: 목, 2019/01/10 - 8:46오후
이번에는 전처리 코드를 추출하는 방법을 소개합니다.
보통 리눅스 커널 코드를 분석할 때 C 코드를 열어 봅니다. 그런데 C 코드를 전처리 파일과 함께 분석하면 효율적으로 리눅스 커널 코드를 읽을 수 있습니다. 그 이유는 컴파일러가 전처리 과정에서 매크로를 모두 풀어서 표현한 정보를 전처리 파일이 담고 있기 때문입니다.
그럼 리눅스 커널 코드에서 전처리 파일을 어떻게 생성할까요? 방법은 매우 간단합니다. 리눅스 커널을 빌드하는 Makefile을 다음과 같이 수정하고 빌드하면 됩니다.
diff --git a/Makefile b/Makefile index 4a7e6df..313dbbe 100644 --- a/Makefile +++ b/Makefile @@ -395,6 +395,7 @@ KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security + -save-temps=obj -std=gnu89 KBUILD_CPPFLAGS := -D__KERNEL__ KBUILD_AFLAGS_KERNEL :=
위와 같이 Makefile을 수정하여 커널 빌드를 완료하면 전처리 파일이 생성됩니다. 그럼 전처리 파일은 어디에서 볼 수 있나요? 아래 명령어로 전처리 파일을 각 커널 디렉터리에서 확인할 수 있습니다.
austindh.kim@~/src/raspberry_kernel/linux$ find . -name *.i | more ./mm/.tmp_filemap.i ./mm/.tmp_dmapool.i ./mm/.tmp_highmem.i ./mm/.tmp_mmu_context.i ./mm/.tmp_slab_common.i ./mm/.tmp_readahead.i
평소 전처리 파일은 특정 폴더에 저장해 놓고 코드 분석에 활용하면 좋습니다.
Forums:
댓글 달기