### 2.1.1. Build Overview

The first thing you need to do is set up the OpenEmbedded build environment by sourcing the environment setup script as follows:

         $ source oe-init-build-env [build_dir]

The `build_dir` is optional and specifies the directory the OpenEmbedded build system uses for the build - the Build Directory. If you do not specify a Build Directory it defaults to `build` in your current working directory. A common practice is to use a different Build Directory for different targets. For example, `~/build/x86` for a `qemux86` target, and `~/build/arm` for a `qemuarm` target. See oe-init-build-env for more information on this script.

Once the build environment is set up, you can build a target using:

         $ bitbake <target>

The `target` is the name of the recipe you want to build. Common targets are the images in `meta/recipes-core/images`, `/meta/recipes-sato/images`, etc. all found in the Source Directory. Or, the target can be the name of a recipe for a specific piece of software such as busybox. For more details about the images the OpenEmbedded build system supports, see the "Images" chapter.

### Note

Building an image without GNU General Public License Version 3 (GPLv3) components is only supported for minimal and base images. See the "Images" chapter for more information.