Linux/buildroot

Buildroot에서 Custom Application 추가하기

임베디드 친구 2025. 4. 8. 08:48
728x90
반응형

Buildroot에서 Custom Application 추가하기

Buildroot는 임베디드 시스템을 위한 루트 파일 시스템을 손쉽게 생성할 수 있도록 도와주는 도구이다. 기본적으로 다양한 패키지를 제공하지만, 프로젝트에 맞는 사용자 정의 애플리케이션(Custom Application)을 추가하는 방법이 필요할 수 있다. 이번 포스팅에서는 Buildroot에서 Custom Application을 추가하는 방법을 자세히 설명한다.

1. Custom Application 추가 개요

Buildroot에서 새로운 애플리케이션을 추가하는 방법은 두 가지가 있다.

  1. 기존의 Buildroot 패키지 시스템을 활용하여 새로운 패키지를 정의하는 방법
  2. 외부 패키지 디렉터리를 만들어 애플리케이션을 추가하는 방법

이 글에서는 첫 번째 방법을 중심으로 설명하며, 외부 패키지 디렉터리를 활용하는 방법도 간략히 언급한다.

2. 새로운 패키지 디렉터리 생성

Buildroot의 package 디렉터리에 새로운 애플리케이션을 위한 서브 디렉터리를 생성해야 한다. 예를 들어, custom_app이라는 패키지를 추가한다고 가정하면 다음과 같이 디렉터리를 만든다.

cd buildroot/package
mkdir custom_app
cd custom_app

3. 필수 파일 작성

Buildroot에서 패키지를 구성하려면 몇 가지 필수 파일을 작성해야 한다.

3.1 Config.in 파일 작성

Config.in 파일은 Buildroot의 메뉴 구성에서 새로운 패키지를 선택할 수 있도록 설정하는 파일이다.

touch Config.in

파일을 열어 다음 내용을 추가한다.

config BR2_PACKAGE_CUSTOM_APP
    bool "Custom Application"
    help
      사용자 정의 애플리케이션을 빌드합니다.

3.2 custom_app.mk 파일 작성

패키지의 빌드 규칙을 정의하는 custom_app.mk 파일을 작성한다.

touch custom_app.mk

파일을 열어 다음 내용을 추가한다.

CUSTOM_APP_VERSION = 1.0
CUSTOM_APP_SITE = $(TOPDIR)/package/custom_app/src
CUSTOM_APP_SITE_METHOD = local

define CUSTOM_APP_BUILD_CMDS
    $(MAKE) -C $(@D)
endef

define CUSTOM_APP_INSTALL_TARGET_CMDS
    $(INSTALL) -D -m 0755 $(@D)/custom_app $(TARGET_DIR)/usr/bin/custom_app
endef

$(eval $(generic-package))

여기서 CUSTOM_APP_SITE 경로는 애플리케이션의 소스 코드가 위치한 경로이다. CUSTOM_APP_BUILD_CMDS에서는 빌드 명령을 지정하고, CUSTOM_APP_INSTALL_TARGET_CMDS에서는 빌드된 실행 파일을 /usr/bin/에 설치하는 규칙을 지정한다.

3.3 src 디렉터리 및 샘플 코드 추가

애플리케이션 소스 코드를 저장할 src 디렉터리를 생성하고, 간단한 C 프로그램을 추가한다.

mkdir src
cd src

샘플 C 코드 (custom_app.c)를 생성한다.

#include <stdio.h>

int main() {
    printf("Hello, Buildroot Custom Application!\n");
    return 0;
}

Makefile도 함께 작성한다.

touch Makefile

Makefile을 열고 다음 내용을 추가한다.

all:
    $(CC) custom_app.c -o custom_app

clean:
    rm -f custom_app

4. Buildroot 설정 반영

이제 작성한 패키지를 Buildroot에서 인식할 수 있도록 설정 파일을 수정해야 한다.

4.1 package/Config.in 파일 수정

Buildroot의 package/Config.in 파일을 열어 다음 줄을 추가한다.

source "package/custom_app/Config.in"

이렇게 하면 Buildroot의 메뉴 설정에서 custom_app 패키지를 선택할 수 있다.

4.2 make menuconfig 실행

이제 make menuconfig를 실행하여 패키지를 활성화한다.

make menuconfig

메뉴에서 Custom Application을 찾아 선택한 후 저장하고 종료한다.

5. 빌드 및 확인

이제 Buildroot를 빌드하여 Custom Application이 포함되었는지 확인한다.

make

빌드가 완료되면 output/target/usr/bin/ 경로에 custom_app 실행 파일이 생성되어 있을 것이다. 타겟 보드에서 실행하면 다음과 같은 출력이 나타난다.

$ /usr/bin/custom_app
Hello, Buildroot Custom Application!

6. 외부 패키지 디렉터리 활용 (선택 사항)

Buildroot의 패키지를 프로젝트 외부에서 관리하려면 BR2_EXTERNAL을 이용하는 방법도 있다. 프로젝트 디렉터리 외부에 custom-external 디렉터리를 만들고, 패키지를 custom-external/package 아래에 추가하는 방식이다. 이를 활용하면 Buildroot를 직접 수정하지 않고도 유지보수가 가능하다.

mkdir -p custom-external/package/custom_app

이후 BR2_EXTERNAL=../custom-external 옵션을 사용하여 Buildroot를 설정하면 된다.

7. 마무리

이번 포스팅에서는 Buildroot에서 Custom Application을 추가하는 방법을 단계별로 설명하였다. 기본적인 패키지 구성 요소와 빌드 과정, 그리고 외부 패키지를 활용하는 방법까지 살펴보았다. 이 방법을 활용하면 Buildroot를 이용한 임베디드 시스템 개발에서 원하는 애플리케이션을 손쉽게 추가하고 관리할 수 있다.

반응형