리눅스 커널 전처리 빌드 하기

이찬영·2021년 8월 3일
0

리눅스

목록 보기
3/3

리눅스 커널 전처리 빌드 하기

리눅스 커널을 빌드할때 매크로로 작성된 부분을 전처리 하여 빌드 할 수 있다.

MakeFile에서 421번줄로 이동한다. vim 에디터에서 줄이동은 줄번호를 입력후 shift+G를 누르면 된다. MakeFile은 당연히 빌드할 커널의 폴더에 있는 MakeFile이다.

정상적으로 이동했다면 아래와 같은 모습을 볼수 있다.

417 KBUILD_AFLAGS   := -D__ASSEMBLY__
418 KBUILD_CFLAGS   := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
419            -fno-strict-aliasing -fno-common -fshort-wchar \
420            -Werror-implicit-function-declaration \
421            -Wno-format-security \
422            -std=gnu89

이제 421번 줄과 422번 줄 사이에 -save-temps=obj \ 코드를 추가해준다.

이전 글에서 본 리눅스 커널 빌드 하는 쉘 스크립트에서 조금만 추가되면 된다.
이전글 보기 - 리눅스 커널 빌드 법

#!/bin/bash

echo "configure build output path"

KERNEL_TOP_PATH="$( cd "$(dirname "$0")" ; pwd -P )"

BUILD_LOG="$KERNEL_TOP_PATH/preprocess_build_log.txt"

OUTPUT="$KERNEL_TOP_PATH/out"
echo "$OUTPUT"

// 이부분 추가됨 !!!!!!!!!!!!!!!!!
PREPROCESS_FILE=$1
echo "build preprocessed file : $PREPROCESS_FILE"

echo "cd linux-4.*"
cd linux-4.19.60

echo "copy config"
cp /boot/config-`uname -r` ./.config

echo "set config"
make O=$OUTPUT menuconfig

echo "clen config"
make mrproper
make clean

// 이부분 추가됨 !!!!!!!!!!!!!!!!!
echo "kernel build" 
make $PREPROCESS_FILE O=$OUTPUT -j4 2>&1 | tee $BUILD_LOG

위에 코드를 보면서 추가된 부분의 주석을 확인하여 추가 해주면 된다.

실행은 아래 처럼 하면 된다.
./스크립트_파일명.sh 전처리할_파일_경로/파일명.i

이전글과 연결 하여 전체 커널을 빌드하는 스크립트, 특정 파일만 전처리하여 빌드하는 스크립트 두개를 나눠서 사용할 수 있게 되었다.

현재 문제점은 전처리된 코드가 OUTPUT 경로로 나와야하는데 원본 리눅스 커널 폴더에서 나온다.
이점은 감안하고 사용하며 추후에 고쳐 보도록 하겠다.

0개의 댓글