The Buildroot user manual


Table of Contents

1. About Buildroot
2. Starting up
2.1. System requirements
2.1.1. Mandatory packages
2.1.2. Optional packages
2.2. Getting Buildroot
2.3. Using Buildroot
3. Working with Buildroot
3.1. Details on Buildroot configuration
3.1.1. Cross-compilation toolchain
Internal toolchain backend
External toolchain backend
Crosstool-NG toolchain backend
3.1.2. /dev management
3.1.3. init system
3.2. make tips
3.3. Customization
3.3.1. Customizing the generated target filesystem
3.3.2. Customizing the Busybox configuration
3.3.3. Customizing the uClibc configuration
3.3.4. Customizing the Linux kernel configuration
3.3.5. Customizing the toolchain
Using the external toolchain backend
Using the internal Buildroot toolchain backend
Using the Crosstool-NG backend
3.4. Storing the configuration
3.4.1. Basics for storing the configuration
Buildroot configuration
Other package configuration
3.4.2. Creating your own board support
3.4.3. Step-by-step instructions for storing configuration
3.4.4. Customizing packages
3.5. Daily use
3.5.1. Understanding when a full rebuild is necessary
3.5.2. Understanding how to rebuild packages
3.5.3. Offline builds
3.5.4. Building out-of-tree
3.5.5. Environment variables
3.6. Integration with Eclipse
3.7. Hacking Buildroot
4. Frequently Asked Questions & Troubleshooting
4.1. The boot hangs after Starting network…
4.2. module-init-tools fails to build with cannot find -lc
4.3. Why is there no compiler on the target?
4.4. Why are there no development files on the target?
4.5. Why is there no documentation on the target?
4.6. Why are some packages not visible in the Buildroot config menu?
4.7. Why not use the target directory as a chroot directory?
5. Going further in Buildroot’s innards
5.1. How Buildroot works
5.2. Advanced usage
5.2.1. Using the generated toolchain outside Buildroot
5.2.2. Using ccache in Buildroot
5.2.3. Location of downloaded packages
5.2.4. Package-specific make targets
6. Developer Guidelines
6.1. Coding style
6.1.1. Config.in file
6.1.2. The .mk file
6.1.3. The documentation
6.2. Adding new packages to Buildroot
6.2.1. Package directory
6.2.2. Config.in file
Choosing depends on or select
6.2.3. The .mk file
6.2.4. Infrastructure for packages with specific build systems
generic-package Tutorial
generic-package Reference
6.2.5. Infrastructure for autotools-based packages
autotools-package tutorial
autotools-package reference
6.2.6. Infrastructure for CMake-based packages
cmake-package tutorial
cmake-package reference
6.2.7. Gettext integration and interaction with packages
6.2.8. Tips and tricks
Package name, config entry name and makefile variable relationship
How to add a package from github
6.2.9. Conclusion
6.3. Patching a package
6.3.1. Providing patches
Downloaded
Within Buildroot
Global patch directory
6.3.2. How patches are applied
6.3.3. Format and licensing of the package patches
6.3.4. Integrating patches found on the Web
6.4. Download infrastructure
7. Legal notice and licensing
7.1. Complying with open source licenses
7.2. License abbreviations
7.3. Complying with the Buildroot license
8. Beyond Buildroot
8.1. Boot the generated images
8.1.1. NFS boot
8.2. Chroot
9. Getting involved
9.1. Mailing List
9.1.1. Subscribing to the mailing list
9.1.2. Searching the List Archives
9.2. IRC
9.3. Patchwork
9.4. Bugtracker
9.5. Buildroot wikipage
9.6. Events
9.6.1. Buildroot Developer Days aside ELC-E 2012 (November 3-4, 2012 - Barcelona)
9.6.2. Buildroot presentation at LSM 2012 (July 12-14, 2012 - Geneva)
9.6.3. Buildroot Developer Days aside FOSDEM 2012 (February 3, 2012 - Brussels)
10. Contributing to Buildroot
10.1. Submitting patches
10.1.1. Cover letter
10.1.2. Patch revision changelog
10.2. Reviewing/Testing patches
10.3. Autobuild
10.4. Reporting issues/bugs, get help
11. Appendix
11.1. Makedev syntax documentation
11.2. Makeuser syntax documentation
11.3. Package Selection for the target
11.4. Host utilities
11.5. Deprecated features

List of Examples

6.1. Config script: divine package
6.2. Config script: imagemagick package: