Using BitBake

BitBake usage examples

Most BitBake commands used when developing are either intended to build (or rebuild) a particular package, or to build a new rootfs image for flashing the device. Here are some examples of the most common commands.

bitbake package-name
Build the “package-name” package.

bitbake -s
List available packages after parsing all recipes. This will generate a lot of output due to sheer number of packages in the system! Best to redirect output to a file bitbake -s > packages.txt

bitbake --help
Print usage help.

Running specific tasks

BitBake supports running individual tasks on a package using the -c flag. See below for examples of running specific tasks using the lighttpd package. If no task is specified, the “build” task is run. This is a generic task that depends on all the other necessary tasks to build a package (fetch, configure, compile, install, etc).

bitbake lighttpd -c listtasks
View a list of possible tasks to run on the lighttpd package.

bitbake lighttpd -c clean
bitbake lighttpd

Clean a package, removing all source code, binaries, etc and rebuild it.

Copy resulting package to target device and install it:

cd ${OETREE}/build/tmp/deploy/eglibc/ipk/armv5te
scp lighttpd_1.4.28-r0.10_armv5te.ipk root@
ssh root@
opkg install /var/tmp/lighttpd_1.4.28-r0.10_armv5te.ipk

bitbake lighttpd -c compile -f
Force bitbake to run the compile task (perhaps you changed the source after compiling).

bitbake lighttpd -c devshell
Open a new shell with the environment configured for development on the package. This can be very useful for debugging issues with compiling a package.

bitbake -b openembedded/recipes/lighttpd/
Runs BitBake on a single recipe file. This bypasses parsing all other recipes and operates only on the specified recipe. This can be useful to speed up development on a particular package when the package is being rebuilt frequently. Note that this skips building any dependencies and therefore they must already be built.