Linux/buildroot

Buildroot 간단한 C/C++ 애플리케이션 추가 및 실행

임베디드 친구 2025. 4. 10. 13:46
728x90
반응형

Buildroot 간단한 C/C++ 애플리케이션 추가 및 실행

1. 개요

Buildroot를 사용하여 사용자 정의 애플리케이션을 추가하는 방법을 설명합니다. 본 예제에서는 간단한 C/C++ 애플리케이션을 작성하고, 이를 Buildroot의 패키지로 추가한 후, 빌드 및 실행하는 과정을 다룹니다.

2. 애플리케이션 코드 작성

먼저, 간단한 C 애플리케이션을 작성합니다. 이 애플리케이션은 "Hello, Buildroot!"를 출력하는 기능을 수행합니다.

소스 코드 예제 (hello.c)

#include <stdio.h>

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

이제 동일한 기능을 수행하는 C++ 버전도 작성할 수 있습니다.

소스 코드 예제 (hello.cpp)

#include <iostream>

int main() {
    std::cout << "Hello, Buildroot!" << std::endl;
    return 0;
}

이제 해당 애플리케이션을 Buildroot의 패키지로 추가하는 방법을 알아보겠습니다.

3. Buildroot 패키지 추가

사용자 정의 애플리케이션을 Buildroot 패키지로 추가하려면 다음 단계를 따릅니다.

3.1 패키지 디렉터리 생성

Buildroot의 package 디렉터리에 새로운 애플리케이션 폴더를 생성합니다.

cd buildroot/package
mkdir -p hello
cd hello

3.2 Config.in 파일 작성

패키지를 구성할 Config.in 파일을 생성합니다.

package/hello/Config.in 파일 작성:

config BR2_PACKAGE_HELLO
    bool "hello application"
    help
      Simple Hello World application for Buildroot.

3.3 hello.mk 파일 작성

패키지를 빌드하기 위한 hello.mk 파일을 작성합니다.

package/hello/hello.mk 파일 작성:

HELLO_VERSION = 1.0
HELLO_SITE = $(BR2_EXTERNAL)/package/hello
HELLO_SITE_METHOD = local
HELLO_DEPENDENCIES =

define HELLO_BUILD_CMDS
    $(TARGET_CC) $(TARGET_CFLAGS) -o $(@D)/hello $(@D)/hello.c
endef

define HELLO_INSTALL_TARGET_CMDS
    $(INSTALL) -D -m 0755 $(@D)/hello $(TARGET_DIR)/usr/bin/hello
endef

$(eval $(generic-package))

위에서 HELLO_BUILD_CMDS에서는 hello.c를 컴파일하여 실행 파일을 생성하고, HELLO_INSTALL_TARGET_CMDS에서는 빌드된 바이너리를 /usr/bin/hello에 복사합니다.

3.4 패키지를 Buildroot 메뉴에 추가

package/Config.in 파일에 다음과 같이 패키지를 등록합니다.

source "package/hello/Config.in"

4. Buildroot 빌드 및 실행

4.1 menuconfig에서 패키지 활성화

Buildroot 설정에서 새로 추가한 패키지를 활성화합니다.

make menuconfig
  • Target Packages -> hello application 선택

4.2 Buildroot 빌드 실행

make

4.3 빌드 결과 확인

빌드가 완료되면 output/target/usr/bin/hello에 실행 파일이 생성됩니다.

4.4 QEMU를 사용한 실행 테스트

QEMU를 사용하여 빌드된 바이너리를 실행할 수 있습니다.

qemu-system-x86_64 -kernel output/images/bzImage -append "root=/dev/ram" -nographic

부팅 후 쉘에서 다음과 같이 실행할 수 있습니다.

/usr/bin/hello

출력 결과:

Hello, Buildroot!

5. 마무리

이 예제에서는 간단한 C/C++ 애플리케이션을 작성하고, 이를 Buildroot에 추가하는 과정을 살펴보았습니다. 패키지 작성법, 설정 파일 구성, 빌드 및 실행 방법을 익힘으로써 더 복잡한 애플리케이션을 Buildroot 환경에서 개발할 수 있습니다.

반응형