새로운 패키지 작성법 (.mk 파일 작성)
Buildroot는 경량화된 임베디드 리눅스 시스템을 손쉽게 빌드할 수 있도록 도와주는 도구입니다. Buildroot의 강점 중 하나는 다양한 패키지를 손쉽게 추가하고 관리할 수 있다는 점입니다. 이번 글에서는 Buildroot에서 새로운 패키지를 작성하는 방법을 설명하고, 핵심 파일인 .mk
파일을 작성하는 과정을 예제와 함께 소개하겠습니다.
1. Buildroot 패키지 구조 개요
Buildroot에서 패키지는 package/
디렉터리 아래에 위치합니다. 새로운 패키지를 추가하기 위해서는 해당 디렉터리에 새로운 패키지 폴더를 생성하고, 필요한 파일을 작성해야 합니다.
새로운 패키지는 일반적으로 다음과 같은 파일들로 구성됩니다:
Config.in
: Kconfig 시스템을 통해 패키지를 활성화할 수 있도록 설정하는 파일<패키지명>.mk
: 패키지를 빌드하는 규칙을 정의하는 Makefilepackage/패키지명/
디렉터리 : 패키지 관련 소스 코드 또는 빌드 관련 스크립트 포함 가능
이제, 예제 패키지를 만들어보겠습니다.
2. 새로운 패키지 디렉터리 생성
먼저, package/
디렉터리 아래에 새로운 패키지 디렉터리를 생성합니다. 예를 들어 mypackage
라는 패키지를 추가한다고 가정하면 다음과 같이 폴더를 만듭니다.
cd buildroot
mkdir -p package/mypackage
이제 해당 디렉터리 안에 필요한 파일을 생성해야 합니다.
3. Config.in 파일 작성
Config.in
파일은 Buildroot의 메뉴 설정(make menuconfig
)에서 패키지를 활성화할 수 있도록 정의하는 역할을 합니다.
다음과 같이 package/mypackage/Config.in
파일을 작성합니다.
menu "My Custom Package"
config BR2_PACKAGE_MYPACKAGE
bool "mypackage"
help
간단한 예제 패키지입니다.
endmenu
이제 Config.in
파일을 Buildroot의 package/Config.in
에 추가하여 패키지가 인식되도록 합니다.
echo "source \"package/mypackage/Config.in\"" >> package/Config.in
4. .mk 파일 작성
이제 가장 중요한 mypackage.mk
파일을 작성해야 합니다. 이 파일은 패키지의 다운로드, 빌드 및 설치 과정을 정의합니다.
package/mypackage/mypackage.mk
파일을 다음과 같이 작성합니다.
################################################################################
# mypackage
################################################################################
MYPACKAGE_VERSION = 1.0.0
MYPACKAGE_SITE = $(BR2_EXTERNAL)/package/mypackage
MYPACKAGE_SITE_METHOD = local
define MYPACKAGE_BUILD_CMDS
$(MAKE) -C $(@D)
endef
define MYPACKAGE_INSTALL_TARGET_CMDS
$(INSTALL) -D $(@D)/mypackage $(TARGET_DIR)/usr/bin/mypackage
endef
$(eval $(generic-package))
.mk
파일의 주요 요소 설명
- 패키지 버전 (
MYPACKAGE_VERSION
): 패키지의 버전을 정의합니다. - 소스 코드 위치 (
MYPACKAGE_SITE
): 패키지 소스 코드가 위치하는 경로를 설정합니다. 이 예제에서는 로컬 경로를 사용했습니다. MYPACKAGE_BUILD_CMDS
: 빌드할 때 실행할 명령을 정의합니다.MYPACKAGE_INSTALL_TARGET_CMDS
: 빌드된 바이너리를 설치할 위치를 지정합니다.$(eval $(generic-package))
: Buildroot의 기본 패키지 빌드 규칙을 적용합니다.
5. 소스 코드 추가 및 테스트
package/mypackage/
디렉터리 내에 간단한 C 프로그램을 추가하여 테스트할 수 있습니다.
package/mypackage/mypackage.c
파일 작성:
#include <stdio.h>
int main() {
printf("Hello, Buildroot!\n");
return 0;
}
package/mypackage/Makefile
파일 작성:
all:
$(CC) mypackage.c -o mypackage
clean:
rm -f mypackage
6. Buildroot에서 패키지 빌드 및 확인
이제 Buildroot에서 새로 추가한 패키지를 빌드할 수 있습니다.
make menuconfig
메뉴에서 mypackage
를 활성화한 후, make
명령을 실행하여 빌드를 진행합니다.
make
빌드가 완료되면 /output/target/usr/bin/mypackage
파일이 생성됩니다.
7. 정리 및 결론
이번 글에서는 Buildroot에서 새로운 패키지를 추가하는 방법을 설명하였습니다. 패키지를 추가하는 과정에서 Config.in
과 .mk
파일을 작성하는 것이 핵심이며, 이를 활용하여 다양한 패키지를 추가할 수 있습니다.
'Linux > buildroot' 카테고리의 다른 글
SSH, Telnet을 이용한 원격 접속 설정 (0) | 2025.04.21 |
---|---|
Buildroot 패키지 빌드 및 디버깅 (0) | 2025.04.20 |
Buildroot에서 패키지 추가하는 방법 (package/ 디렉터리 활용) (0) | 2025.04.17 |
타겟 보드별 크로스 컴파일 환경 구축 (0) | 2025.04.16 |
Buildroot에서 External Toolchain 설정 방법 (0) | 2025.04.15 |