Yocto 커스텀 레이어: 애플리케이션과 라이브러리 레시피 작성
이번 포스팅에서는 Yocto 프로젝트에서 사용자 정의 애플리케이션과 외부 라이브러리를 패키징하고 이미지에 포함하는 방법을 설명합니다. 지난 포스팅에서 Yocto 개발 환경을 설정하는 방법을 다루었으므로, 이번에는 실제로 C/C++ 애플리케이션과 외부 라이브러리를 다루는 레시피를 작성하는 실습을 진행해보겠습니다.
1. 간단한 C/C++ 애플리케이션 작성과 Yocto 레시피 작성
먼저, 간단한 C/C++ 애플리케이션을 작성하고 이를 Yocto 패키지로 빌드하는 방법을 살펴보겠습니다.
1.1 C 애플리케이션 작성
아래는 간단한 C 프로그램 예제입니다. 이 프로그램은 "Hello Yocto!"를 출력하는 역할을 합니다.
hello-yocto.c
파일:
#include <stdio.h>
int main() {
printf("Hello Yocto!\n");
return 0;
}
1.2 디렉터리 구성
Yocto의 커스텀 레이어 내에 애플리케이션을 빌드할 수 있도록 디렉터리를 구성합니다. 예를 들어, meta-mycustom
레이어가 있다고 가정하면 다음과 같이 디렉터리를 구성합니다.
meta-mycustom/
├── recipes-apps/
│ └── hello-yocto/
│ ├── files/
│ │ └── hello-yocto.c
│ └── hello-yocto_1.0.bb
└── ...
files/
디렉터리에는 실제 소스 코드를 넣습니다.hello-yocto_1.0.bb
는 빌드 레시피 파일입니다.
1.3 레시피 파일 작성
다음으로 hello-yocto_1.0.bb
레시피 파일을 작성합니다.
hello-yocto_1.0.bb
파일:
SUMMARY = "A simple Hello Yocto application"
DESCRIPTION = "This is a simple C application that prints Hello Yocto."
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835f13c17c08266dc20137c8b2b9c3f"
SRC_URI = "file://hello-yocto.c"
S = "${WORKDIR}"
do_compile() {
${CC} hello-yocto.c -o hello-yocto
}
do_install() {
install -d ${D}${bindir}
install -m 0755 hello-yocto ${D}${bindir}
}
FILES:${PN} += "${bindir}/hello-yocto"
1.4 빌드 및 이미지 포함
이제 bitbake
를 사용하여 패키지를 빌드합니다.
bitbake hello-yocto
성공적으로 빌드된 경우, 해당 바이너리를 이미지에 포함하려면 local.conf
나 이미지 레시피 파일에 다음과 같이 추가합니다.
IMAGE_INSTALL:append = " hello-yocto"
이후 이미지를 재생성하면 해당 애플리케이션이 포함된 이미지를 얻을 수 있습니다.
2. 외부 라이브러리 패키징 및 이미지 포함
다음으로 외부 오픈소스 라이브러리를 패키징하고 이를 이미지에 포함하는 방법을 살펴보겠습니다. 예제 라이브러리로 zlib
을 사용해보겠습니다.
2.1 레시피 작성
Yocto는 대부분의 인기 있는 라이브러리를 이미 제공하지만, 예제 목적으로 meta-mycustom/recipes-libs/zlib/
에 레시피를 작성해보겠습니다.
디렉터리 구조:
meta-mycustom/
├── recipes-libs/
│ └── zlib/
│ └── zlib_1.2.11.bb
└── ...
zlib_1.2.11.bb
파일:
SUMMARY = "Zlib compression library"
DESCRIPTION = "Zlib is a widely used compression library."
HOMEPAGE = "https://zlib.net"
LICENSE = "Zlib"
LIC_FILES_CHKSUM = "file://README;md5=1e8ca8f3e21a2f7cb8ac5365bde87dc7"
SRC_URI = "https://zlib.net/zlib-1.2.11.tar.gz"
SRC_URI[sha256sum] = "1c9f62f0778697a09d36121ead88e08e73934c80acaa413eab05b6de262b3e44"
S = "${WORKDIR}/zlib-1.2.11"
inherit autotools
do_install() {
oe_runmake install DESTDIR=${D}
}
FILES:${PN} += "${libdir}/*.so*"
2.2 빌드 및 이미지 포함
bitbake zlib
이미지에 포함하려면 다음과 같이 설정합니다.
IMAGE_INSTALL:append = " zlib"
이제 Yocto 빌드 시스템이 외부 라이브러리를 패키징하고 이미지에 포함하게 됩니다.
3. 최종 이미지 빌드 및 검증
모든 준비가 끝났다면 다음과 같이 이미지를 빌드합니다.
bitbake core-image-minimal
빌드가 완료된 후 타겟 보드(RK3399 등)에서 부팅하여 다음과 같이 애플리케이션과 라이브러리를 확인할 수 있습니다.
# Hello Yocto 실행
hello-yocto
# zlib 라이브러리 확인
ls /usr/lib/libz.so*
정상적으로 실행되면 애플리케이션과 외부 라이브러리가 성공적으로 Yocto 이미지에 포함된 것입니다.
4. 마무리
이번 포스팅에서는 Yocto에서 C/C++ 애플리케이션과 외부 라이브러리를 패키징하고 이미지를 구성하는 방법을 설명했습니다. 이를 통해 원하는 소프트웨어를 Yocto 기반 시스템에 쉽게 통합할 수 있습니다.
'Linux > yocto' 카테고리의 다른 글
Yocto 고급 개발 기법: 디버깅과 성능 튜닝 (0) | 2025.05.19 |
---|---|
Yocto 프로젝트: 이미지 커스터마이징 (0) | 2025.05.18 |
Yocto RK3399 커스텀 Layer 생성 (0) | 2025.05.15 |
RK3399 이미지 커스터마이징 (0) | 2025.05.14 |
Yocto 기본 빌드 프로세스 이해 (2) - Bitbake 기본 사용법, 이미지와 패키지 빌드, 작업 디렉터리 및 로그 분석 (0) | 2025.05.13 |