고급 개발자로 가는 길

Embedded/Linux Kernel

[Linux Kernel] 전처리 코드 생성 : 특정 전처리 파일 추출

다크엔지니어 2022. 1. 27. 23:13
반응형

전체 전처리 방식이 궁금하다면 아래 글을 참고하길 바란다.

2022.01.27 - [Embedded/Linux Kernel] - [Linux Kernel] 전처리 코드 생성 : 전체 전처리 파일 추출

 

[Linux Kernel] 전처리 코드 생성 : 전체 전처리 파일 추출

리눅스 커널은 캡슐화나 다형성 등 객체지향 방식으로 구현이 된 소스들이 많다. 사실 필자는 객체지향 언어를 좋아하다 보니 오히려 편하다. 본론으로 돌아와 그래서 매크로로 구현된 코드가

darkengineer.tistory.com

 

이 글 에서는 특정 전처리 파일 추출 방법에 대해 설명해 보겠다.

전체 전처리 추출 방식은 많은 메모리를 잡아 먹게 된다.

그리고 빌드를 수시로 해야되는 단점도 존재한다.

 

그래서 이럴 때 특정 전처리 추출 방식이 필요하다.

아래 빌드 스크립트 코드를 실행 하면 되는데, 주석 부분 내용 참고하면 된다.

#!/bin/bash

echo "configure build output path"

KERNEL_TOP_PATH="$( cd "$(dirname "$0")" ; pwd -P )"
OUTPUT="$KERNEL_TOP_PATH/out"
echo "$OUTPUT"

KERNEL=kernel7l
BUILD_LOG="$KERNEL_TOP_PATH/rpi_preproccess_build_log.txt"

//아래 부분이 특정 파일 추출을 받아서
PREPROCESS_FILE=$1
echo "build preprocessed file: $PREPROCESS_FILE"

echo "move kernel source"
cd linux

echo "make defconfig"
make O=$OUTPUT bcm2711_defconfig

//여기서 해당 파일만 전처리
echo "kernel build"
make $PREPROCESS_FILE O=$OUTPUT zImage modules dtbs -j4 2>&1 | tee $BUILD_LOG

 

달아 놓은 주석을 통해, 아마 간단히 유추 가능할거로 판단된다.

더 설명 하자면 $1 을 통해 빌드 스크립트 실행 시 추가 옵션 명령어를 읽어와

make 실행 시 읽어 온 특정 파일만 전처리 파일 추출을 진행하게 되는 것이다.

 

아래와 같이 빌드가 정상되면 core.i 전처리 파일이 생성이 된다.

반응형