123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- // -*- mode:doc; -*-
- // vim: set syntax=asciidoc:
- [[ccache]]
- ==== Using +ccache+ in Buildroot
- http://ccache.samba.org[ccache] is a compiler cache. It stores the
- object files resulting from each compilation process, and is able to
- skip future compilation of the same source file (with same compiler
- and same arguments) by using the pre-existing object files. When doing
- almost identical builds from scratch a number of times, it can nicely
- speed up the build process.
- +ccache+ support is integrated in Buildroot. You just have to enable
- +Enable compiler cache+ in +Build options+. This will automatically
- build +ccache+ and use it for every host and target compilation.
- The cache is located in the directory defined by the +BR2_CCACHE_DIR+
- configuration option, which defaults to
- +$HOME/.buildroot-ccache+. This default location is outside of
- Buildroot output directory so that it can be shared by separate
- Buildroot builds. If you want to get rid of the cache, simply remove
- this directory.
- You can get statistics on the cache (its size, number of hits,
- misses, etc.) by running +make ccache-stats+.
- The make target +ccache-options+ and the +CCACHE_OPTIONS+ variable
- provide more generic access to the ccache. For example
- ----
- # set cache limit size
- make CCACHE_OPTIONS="--max-size=5G" ccache-options
- # zero statistics counters
- make CCACHE_OPTIONS="--zero-stats" ccache-options
- ----
- +ccache+ makes a hash of the source files and of the compiler options.
- If a compiler option is different, the cached object file will not be
- used. Many compiler options, however, contain an absolute path to the
- staging directory. Because of this, building in a different output
- directory would lead to many cache misses.
- To avoid this issue, buildroot has the +Use relative paths+ option
- (+BR2_CCACHE_USE_BASEDIR+). This will rewrite all absolute paths that
- point inside the output directory into relative paths. Thus, changing
- the output directory no longer leads to cache misses.
- A disadvantage of the relative paths is that they also end up to be
- relative paths in the object file. Therefore, for example, the debugger
- will no longer find the file, unless you cd to the output directory
- first.
- See https://ccache.samba.org/manual.html#_compiling_in_different_directories[the
- ccache manual's section on "Compiling in different directories"] for
- more details about this rewriting of absolute paths.
- When +ccache+ is enabled in Buildroot using the +BR2_CCACHE=y+ option:
- * +ccache+ is used during the Buildroot build itself
- * +ccache+ is not used when building outside of Buildroot, for example
- when directly calling the cross-compiler or using the SDK
- One can override this behavior using the +BR2_USE_CCACHE+ environment
- variable: when set to +1+, usage of ccache is enabled (default during
- the Buildroot build), when unset or set to a value different from +1+,
- usage of ccache is disabled.
|