BuildRoot
- Allows to build a toolchain, a root filesystem image with many applications and libraries, a bootloader and a kernel image
- Or any combination of the previous items
- Supports building uClibc, glibc and musl toolchains, either built by Buildroot, or external
- Over 1200+ applications or libraries integrated, from basic utilities to more elaborate software stacks: X.org, GStreamer, Qt, Gtk, WebKit, Python, PHP, etc.
- Good for small to medium embedded systems, with a fixed set of features
- No support for generating packages (.deb or .ipk)
- Needs complete rebuild for most configuration changes.
Active community, releases published every 3 months.
Configuration takes place through a *config interface similar to the kernel make menuconfig
- Allows to define
- Architecture and specific CPU
- Toolchain configuration
- Set of applications and libraries to integrate
- Filesystem images to generate
- Kernel and bootloader configuration
Build by just running make
adding a new package
- A package allows to integrate a user application or library to Buildroot
Each package has its own directory (such as package/gqview). This directory contains:
- A Config.in file (mandatory), describing the configuration options for the package. At least one is needed to enable the package. This file must be sourced from package/Config.in
- A gqview.mk file (mandatory), describing how the package is built.
- Patches (optional). Each file of the form gqview-*.patch will be applied as a patch.
For a simple package with a single configuration option to enable/disable it, the Config.in file looks like:
config BR2_PACKAGE_GQVIEW bool "gqview" depends on BR2_PACKAGE_LIBGTK2 help GQview is an image viewer for Unix operating systems
http://prdownloads.sourceforge.net/gqview
It must be sourced from package/Config.in: source "package/gqview/Config.in"
Create the gqview.mk file to describe the build steps
GQVIEW_VERSION = 2.1.5 GQVIEW_SOURCE = gqview-$(GQVIEW_VERSION).tar.gz GQVIEW_SITE = http://prdownloads.sourceforge.net/gqview GQVIEW_DEPENDENCIES = host-pkgconf libgtk2 GQVIEW_CONF_ENV = LIBS="-lm" $(eval $(autotools-package))
The package directory and the prefix of all variables must be identical to the suffix of the main configuration option BR2_PACKAGE_GQVIEW
- The autotools-package infrastructure knows how to build autotools packages. A more generic generic-package infrastructure is available for packages not using the autotools as their build system.