You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Yocto构建中添加自定义应用程序镜像?

Adding Your Custom HelloWorld Application to a Yocto Image

Got it, let's walk through how to add your custom HelloWorld app to your Yocto-built Linux image. First, quick note: since we're targeting Linux, your app shouldn't be a .exe (that's Windows-specific)—I assume that's a typo, and you have a Linux executable or source code for your app. Let's cover both scenarios, starting with the recommended approach of building from source via a BitBake recipe.

You don't want to modify Yocto's default layers (like meta-core or meta-openembedded)—creating your own layer keeps your custom work organized and easy to maintain.

  • Run this command from your Yocto build directory to generate a layer:
    bitbake-layers create-layer meta-mylayer
    
  • Add your new layer to conf/bblayers.conf (adjust paths to match your setup):
    BBLAYERS ?= " \
      /path/to/yocto/poky/meta \
      /path/to/yocto/poky/meta-poky \
      /path/to/yocto/poky/meta-yocto-bsp \
      /path/to/yocto/poky/meta-mylayer \
      "
    

Step 2: Write a BitBake Recipe for HelloWorld

Recipes tell Yocto how to fetch, compile, and install your application.

  1. Create the directory structure for your recipe in the custom layer:
    mkdir -p meta-mylayer/recipes-helloworld/helloworld
    
  2. Create a recipe file named helloworld_0.1.bb (the 0.1 is your app version—tweak as needed) with content matching your app type:

Scenario A: Building from Source Code

If you have C/C++ source code for HelloWorld, use this basic recipe:

SUMMARY = "Custom HelloWorld application"
DESCRIPTION = "Simple HelloWorld app built for Yocto"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI = "file://helloworld.c"

S = "${WORKDIR}"

do_compile() {
    ${CC} ${CFLAGS} ${LDFLAGS} helloworld.c -o HelloWorld
}

do_install() {
    install -d ${D}${bindir}
    install -m 0755 HelloWorld ${D}${bindir}/HelloWorld
}
  • Place your helloworld.c source file in the same directory as the recipe.

Scenario B: Using a Precompiled Linux Executable

If you already have a compiled Linux binary (not .exe), use this recipe instead:

SUMMARY = "Precompiled HelloWorld application"
DESCRIPTION = "Prebuilt HelloWorld app for Yocto"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI = "file://HelloWorld"

S = "${WORKDIR}"

do_install() {
    install -d ${D}${bindir}
    install -m 0755 HelloWorld ${D}${bindir}/HelloWorld
}
  • Put your precompiled HelloWorld binary in the recipe directory.

Step 3: Add the App to Your Image

Tell Yocto to include your app in the final image:

  • Open conf/local.conf and add this line (note the leading space—it's important!):
    IMAGE_INSTALL_append = " helloworld"
    

Step 4: Build Your Image

Run your usual image build command, for example:

bitbake core-image-minimal

Once the build finishes, your HelloWorld app will live in the target image's /usr/bin/ directory (since ${bindir} defaults to /usr/bin).

Quick Troubleshooting Checks

  • Confirm your recipe is recognized: run bitbake -s | grep helloworld—you should see your recipe listed.
  • If layer errors pop up, double-check bblayers.conf to ensure your custom layer is included correctly.

内容的提问来源于stack exchange,提问作者Jethro63

火山引擎 最新活动