How to include a simple C file in Yocto image by creating your own layer?
In this post, I will explain about creating your own layer in Yocto and then creating a simple C file which gets included in your final image(core-image-minimal).
So, first we will understand how to create your own layer in Yocto and then adding a simple C application into an final image.
Create your own layer
Basically there are two ways to create your own layer in Yocto:
- Manually
- through Bitbake script
I will create a layer through Bitbake which is quite simpler and easier than doing it manually.
Assuming you have poky project downloaded from yocto's website, 
- Navigate to poky project and set environment by running source oe-init-build-env
- Now you got moved to "Build" directory, if you want to create a layer where other defaults layers(e.g. meta-poky etc.) are present then run "cd .."
- Create a layer by running "bitbake-layers create-layer <meta-newlayer>"
- Navigate to build directory and run "bitbake-layers add-layer ../<meta-newlayer> which adds this layer into bblayer.conf file
- That's it !! see below screenshot for reference,
Create a simple C app and recipe
Now we will create a simple C application and a recipe. A recipe is parsed to Bitbake and Bitbake further built this C app, installed onto a final image. Follow below steps:
- Navigate to your own layer - cd meta-love
- Create a recipe - mkdir recipes-love
- Navigate to recipe dir and create a app dir - cd recipes-love & mkdir love
- Navigate to app dir - cd love
- Create another dir called files - mkdir files
- Create a recipe with following content - vi love_0.1.bb
          SUMMARY = "Test Application"
          LICENSE = "CLOSED"
          SRC_URI = "file://love.c \
        "
          do_compile () {
           ${CC} ${CFLAGS} ${LDFLAGS} ${WORKDIR}/love.c -o ${WORKDIR}/love
          }
          do_install () {
          install -d ${D}${bindir}
          install -m 0755 ${WORKDIR}/love ${D}${bindir}/
          }
- Navigate to files dir - cd files
- Create a simple C file - vi love.c
          int main()
          {
              printf("Love is God\n");
              return 0;
          }
- Add IMAGE_INSTALL_append = " love" in build/conf/local.conf file
- Navigate to build and run "bitbake core-image-minimal" (Make sure, you have set environment)
- Go to "build/tmp/deploy/images/qemux86" and run "runqemu core-image-minimal"
- Run your app
 
Comments
Post a Comment