이번주에는 커스텀 레이어를 만들어 c로 작성한 패키지를 만들어 이미지에 포함시킬 것이다. 목표는 qemu를 실행시키고 helloworld라는 명령어를 입력했을때 ----hello world!!!를 출력하게 만드는 것이다.
1. 패키지용 레이어 생성
$bitbake-layers create-layer meta-helloworld
2. c파일 작성 및 압축
강의를 참고하여 레이어에 recipes-hello를 추가하고 hellowolrd라는 폴더를 만들어 패키지 구조를 생성하였다.

실행될 helloworld.c 파일은 다음과 같다

작성 후 tar 명령어로 폴더를 압축해준다

위 사진에서 마지막에 붙은 /를 빼줘야 나중에 bitbake가 경로를 올바르게 찾아간다 왜냐하면
tar -czvf helloworld.tar.gz helloworld는 helloworld 폴더 그 자체를 압축하는거고 tar -czvf helloworld.tar.gz helloworld/는 폴더 내부 파일을 압축시키는것이기때문이다.
3. 패키지 bb파일 작성
SRC_URI로 압축 파일 경로를 작성해주면 된다. bb파일은 파이썬과 셸 스크립트를 혼용해서 쓰기때문에 변수 할당은 파이썬 문법으로, 태스크 함수의 본문은 셸 스크립트로 실행한다. do_compile로 소스 코드를 빌드하고 do_install로 결과물을 설치하는데 이때 위치와 권한을 부여해준다.

bb 파일 작성 후 bitbake helloworld로 패키지가 제대로 생성되었는지 확인해본다
4. 커스텀 레이어 레시피 또는 local.conf에 append
저번에 패키지 추가했을때 사용한 IMAGE_INSTALL 변수를 사용하여 패키지를 추가한다.
5. 실행

성공적으로 명령어를 실행한다. 패키지 또한 bin 폴더에 있는 것을 확인할 수 있다!

'OSSCA-2025-3rd-Class-yocto' 카테고리의 다른 글
| [3주차] yocto layer 구성 파일 및 custom layer 생성, 패키지 추가 (0) | 2025.10.29 |
|---|---|
| [3주차] YOCTO core-image-weston 빌드 (0) | 2025.10.16 |
| [3주차] 임베디드 OS, Yocto Project 구성 및 컨셉 (0) | 2025.10.14 |
| [1주차] 프로젝트 개요 및 git 이해(git init과 git init --bare로 만든 directory의 차이, stash 명령어의 사용) (0) | 2025.10.04 |
| [1주차] 프로젝트 개요 및 git 이해(fetch와 pull의 차이, merge와 rebase의 차이) (0) | 2025.10.03 |