Yocto 프로젝트에서 레시피는 패키지를 빌드하기 위한 모든 정보를 포함하는 스크립트이다. 레시피는 .bb 확장자를 가지며, 다양한 최소 필수 요소를 포함하고 있다.

기본 구조

레시피는 여러 부분으로 나뉜다. 기본적인 구조는 다음과 같다:

예제 레시피

아래는 기본적인 Yocto 레시피의 예제이다:

DESCRIPTION = "Simple hello world application"
HOMEPAGE = "http://www.example.com"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
SRC_URI = "http://www.example.com/downloads/hello-1.0.tar.gz"
SRC_URI[md5sum] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
SRC_URI[sha256sum] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

DEPENDS = "glibc"

S = "${WORKDIR}/hello-1.0"

inherit autotools

do_configure() {
    ./configure --prefix=${prefix}
}

do_compile() {
    oe_runmake
}

do_install() {
    install -d ${D}${bindir}
    install -m 0755 hello ${D}${bindir}
}

주요 변수 설명

이 외에도 레시피에 포함될 수 있는 중요한 변수와 함수들이 몇 가지 더 있다.

추가 변수

추가 함수

Yocto 클래스

Yocto에서 제공하는 많은 클래스가 있으며, 이를 통해 많은 작업을 자동화할 수 있다. 주요 클래스는 다음과 같다:

환경 변수

레시피에서 종종 사용되는 중요한 환경변수는 다음과 같다:

커스터마이징

기본적인 구조를 이해한 후에는 레시피를 쉽게 커스터마이징하여 다양한 소프트웨어를 빌드할 수 있다. 예를 들어 특정 컴파일러 플래그를 추가하거나, 특수한 패치 파일을 적용하거나, 빌드 과정을 수정할 수 있다.

EXTRA_OECONF = "--disable-static --enable-shared"
CFLAGS += "-O2"

이와 같은 방식으로 Yocto 레시피는 유연하고 강력하게 다양한 소프트웨어와 패키지 빌드를 지원한다.