레시피의 종류
- 비트베이크의 레시피에는 두 종류의 레시피가 존재하며, 각 레시피는 간략히 다음과 역할을 한다.
- Image 레시피: 패키지들을 묶어 최종 파일 시스템 구조(rootfs)를 생성
- Package 레시피: 소스코드를 가져와 컴파일하고 하나의 패키지로 생성
Image 레시피
# 1.
require recipes-extended/images/core-image-full-cmdline.bb
IMAGE_FEATURES:remove = "splash"
CORE_IMAGE_EXTRA_INSTALL += "myapp"
-------------------------
# 2.
inherit core-image
IMAGE_FEATURES += "ssh-server-openssh splash"
CORE_IMAGE_EXTRA_INSTALL += "strace myapp"
- Image 레시피는 기본적으로 위와 같은 구조를 가진다.
- 1.의 경우, 기존의 core-image-full-cmdline 레시피를 그대로 불러와 이를 수정하는 방법이다.
- 2.의 경우, 이미지 생성을 위한 새 레시피를 작성하는 방법이다. 이땐 core-image를 레시피에서 상속한다.
- 위 레시피에 사용된 IMAGE_FEATURES와 CORE_IMAGE_EXTRA_INSTALL 변수는 다음의 역할을 한다.
- IMAGE_FEATURES
- 이미지에 특정한 기능을 활성화하기 위해 사용하는 변수이다.
- allow-root-login: SSH로 Root로 로그인할 수 있게 허용해주는 기능
- allow-empty-password: SSH에서 빈 암호를 사용해 Root로 로그인할 수 있게 허용해주는 기능
- empty-root-password: 빈 암호로 Root로 로그인 하기 위해 활성화 해줘야하는 기능
- serial-autologin-root: 시리얼 콘솔에서 자동으로 Root로 접근을 허용해주는 기능
- dbg-pkgs: 이미지에 설치된 모든 패키지에 디버그 심볼을 설치하는 기능
- 이 외에도 더 많은 기능을 제공하며 다음 링크를 참조하면 된다. → 링크
- CORE_IMAGE_EXTRA_INSTALL
- 이미지에 새 패키지를 등록하기 위한 변수이다.
- Package 레시피로 작성된 패키지를 해당 변수에 등록해주면 된다.
- 여기에 패키지가 등록되어야, Package 레시피가 빌드 시스템에 의해 빌드된다.
- 레시피 간의 의존 관계(DEPENDS, RDEPENDS 등)에 따라서도 Package 레시피는 빌드되기도 한다.
Package 레시피
DESCRIPTION = "Simple Helloworld Application"
SECTION = "examples"
LICENSE = "MIT"
SRC_URI = "file://helloworld.c"
SRC_URI[md5sum] = "a1b2c3d4e5f6g7h8i9j0..."
SRC_URI[sha256sum] = "z9y8x7w6v5u4t3s2r1q0..."
S = "${WORKDIR}"
do_compile() {
${CC} helloworld.c -o helloworld
}
do_install() {
install -D -m 0755 helloworld ${D}${bindir}/helloworld
}
- Image 레시피 혹은 의존 관계에 따라 Package 레시피는 비트베이크에 의해서 빌드가 진행된다.
- 위 Package 레시피는 이미지에 등록될 때 /usr/bin 하위에 바이너리 실행 파일로 등록되는 예제이다.
- Package 레시피에서 사용되는 SRC_URI, D, bindir 등의 변수는 다음과 같은 역할을 한다.
- SRC_URI
- 빌드 과정 중 do_fetch 태스크 과정에서 소스코드를 다운로드받는 경로를 지정
- SRC_URI[md5sum, sha256sum]은 다운로드 받은 소스가 변경되지 않았는지 확인하기 위한 목적
- 이 변수에 대한 자세한 내용은 "[Yocto 학습] 2장"을 참고
- D
- 임시 rootfs 경로를 나타냄
- 기본적으로 build/tmp/work/.../<recipe>/<version>/imgae/ 경로로 설정됨
- bindir
- rootfs 중 /usr/bin 경로를 가리킴
- ${bindir} 말고도 ${base_bindir}, ${base_sbindir} 등 다양한 rootfs 경로를 비트베이크에서 제공함
- 다양한 rootfs 경로는 다음 장에서 이어서 설명
autotools 클래스
- Autotools 기반 프로젝트를 자동으로 configure/build/install 해주는 표준 클래스이다.
- 즉, autoconf와 automake 그리고 libtool 기반의 프로젝트의 자동 빌드를 수행해준다.
- 대표적으로 소스에 configure.ac, Makefile.am 등 있는 경우 자동 빌드를 수행해준다.

- dbus-wait 패키지를 예로 들자면, 해당 패키지는 autoconf와 automake 기반의 프로젝트이다.
- 따라서, 패키지의 소스에는 configure.ac와 Makefile.am이 존재한다.
- 이 패키지를 빌드하기 위해서 위 캡쳐와 같이 레시피에서는 inherit autotools을 사용하는 것을 볼 수 있다.
- inherit은 특정 클래스를 레시피에서 상속받아 사용하기 위한 키워드이다.
※ 다음 장에서는 레시피의 태스크 확장, 소스 패치, rootfs 경로 변수 등을 설명한다.
'Linux > Yocto' 카테고리의 다른 글
| [Yocto 학습] 7장: Poky를 활용한 Raspberry Pi 4 이미지 빌드 (0) | 2026.05.26 |
|---|---|
| [Yocto 학습] 6장: 레시피(*.bb, *.bbappend) 커스터마이징 방법 - 2 (0) | 2026.05.12 |
| [Yocto 학습] 4장: 레이어(meta-*) 생성 방법 (0) | 2026.05.10 |
| [Yocto 학습] 3장: 비트베이크(bitbake) 문법 (0) | 2026.05.05 |
| [Yocto 학습] 2장: 비트베이크(bitbake)란? (0) | 2026.05.03 |




