Development Examples
Building HelloWorld without BitBake
The following example shows how to build a simple C application, transfer it to the device using SCP, and run it over an SSH connection.
# set PATH to include the toolchain
# (assumes OETREE is set from env-oe.sh and build system is x86_64)
export PATH=$PATH:${OETREE}/build/tmp/sysroots/x86_64-linux/usr/armv5te/bin
# compile and link helloworld.c
arm-corecdp-linux-gnueabi-gcc -o helloworld helloworld.c
# copy to device in /usr/bin/
scp helloworld root@192.168.2.1:/usr/bin/
# ssh to device and run it
ssh root@192.168.2.1
helloworld
Building HelloWorld with a BitBake recipe
The following example shows how to package a simple C application using a BitBake recipe. First, the recipe is created. Then the package is built and copied to the device using SCP. Lastly, opkg is used to install the package on the device.
# create a recipe
cd ${OETREE}/user-layer/recipes
mkdir helloworld
cd helloworld
# (create helloworld_1.0.0.bb, see below for contents)
# (create helloworld.c)
# build package
cd ${OETREE}
bitbake helloworld
# copy the package to the device
scp build/tmp/deploy/eglibc/ipk/armv5te/helloworld_1.0.0-r0.10_armv5te.ipk root@192.168.2.1:/var/tmp/
# install the package
ssh root@192.168.2.1
cd /var/tmp
opkg install helloworld_1.0.0-r0.10_armv5te.ipk
# run it
helloworld
To install the helloworld package into a custom filesystem image that can be flashed into the device, see Creating a Custom Image
helloworld_1.0.0.bb
For further explanation of this recipe, see Writing BitBake Recipes
DESCRIPTION = "HelloWorld"
SECTION = "examples"
LICENSE = "GPL"
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}
}