Before start you have to read these articles:
OpenWrt Buildroot needs a case sensitive file system. It should work on almost any Linux distribution.
Recommended: Build older versions with older Linux versions in a VM.
Almost every software in OpenWrt is available as a package. OpenWrt downloads code (using archive, git …) compiles it and includes in the final image.
Every archive lands in
Every code (from archive or git) is available in
A mirror of package sources is maintained at https://mirror2.openwrt.org/sources/.
Approximately required disc space for compiling OpenWrt:
|typical, Stable||1.5 GB||3.5 GB|
|all feeds/pkgs||x||~45 GB|
Typical: Compile an Image that is working on typical consumer routers that have 4MB or 8MB flash.
Build-time is highly dependable on the number of Cores/Jobs and can be shrunk to less than 30 minutes (from 90 minutes). Build time with single core can take several hours.
|make jobs||time needed||source|
|2, all, local feed mirrors||3h40min|
|4, all, local feed mirrors||2h17min|
Typical: Select packages fitting into 8MB flash, build on HDD, ar71xx or brcm47xx target
Test SSD vs. HDD
Build may FAIL
The build process can be accelerated by running multiple concurrent job processes using the
make -j 3
<your number of CPU cores + 1>
If the build fails with errors that include
[s-attrib] Killed and
[all-gcc] Error 2 while compiling gcc, this indicates you are out of disk space or RAM. This could be likely if you are building within a virtual machine with < 1 Gb RAM allocated and no swap.
menuconfig: Packages selected with
yor shown as
*get included in squashfs instead of installing them later to jffs2.
See Creating packages.
Have you run this command? See this.
./scripts/feeds install <package>
Maybe you are not looking for it in the right submenu. See the
Makefile of the package to find out.
You are looking for this:
define Package/<package>/Default SUBMENU:=Firewall SECTION:=net CATEGORY:=Network
Menuconfig appears to cache package lists and (especially) profiles. Try deleting the
<buildroot_dir>/tmp directory and then running
make menuconfig again.
cd ~/openwrt/ rm -rf tmp make menuconfig
Also try refreshing your package indexes:
./scripts/feeds update -i
-i is important if you're not using the latest revisions of any packages, as this flag prevents updates from the feed sources.
Some platforms dont offer specialized single targets per router because most routers use almost the same configuration and do not require special packages for USB, ethernet or wireless. Selecting the default generic target will build images for all single targets. Examples: Ralink/Mediatek (ramips) devices
- Files inside the buildroot are specific to host systems.
Build dependency: Please install GNU find # old files in staging_dir/host
- remove untracked files with the help of svn or git
- use make targets depending on what you don't want
make clean make dirclean make distclean make target/linux/clean * rm -rf tmp/ rm .config .config.old
* Kernel Config change is not triggering rebuild, see: openwrt-devel
If you are running a buildroot inside a VM with many threads you might experience random build failures.
Setup: Host: i7 16GB RAM, VM on Harddisk, Win 7 64bit, VMWare Player Guest: Lubuntu 13.04 64bit 4GB RAM ext4 partition make -j 8
Errors: Build fails like
mv: cannot stat '.deps/dlog.Tpo': No such file or directory or ../libtool: line 46: -c: command not found libtool: Version mismatch error. This is libtool 2.4, but the libtool: definition of this LT_INIT comes from libtool 2.2.6. libtool: You should recreate aclocal.m4 with macros from libtool 2.4 libtool: and run autoconf again.
Cleaning up buildroot helps sometimes, reduce concurrency.
Yes, of course. If you find any bugs, please use our ticket system or send a report to firstname.lastname@example.org . Patches for the bugs should be send to the mailing list.
NOTE: Changes to the buildroot system or the associated
Makefiles could break the compile process. Please do not submit bug reports against modified copies of buildroot. Thanks!
The OpenWrt build bots provide a list of broken packages: http://buildbot.openwrt.org:8010/broken_packages/
There is a comparison of OpenWrt and upstream package versions available: https://sdwalker.github.io/uscan/
The mailing list: https://lists.openwrt.org/pipermail/openwrt-devel/ generates Patchwork entries: http://patchwork.ozlabs.org/project/openwrt/list/