<p>Usage and documentation by Thomas Petazzoni. Contributions from
Karsten Kruse, Ned Ludd, Martin Herren.</p>
- <p><small>Last modification : $Date: 2004/12/27 19:01:52 $</small></p>
+ <p><small>Last modification : $Id: buildroot-documentation.html,v 1.2 2004/12/28 19:15:20 andersen Exp $</small></p>
<ul>
<li><a href="#about">About Buildroot</a></li>
<li><a href="#custom_uclibc">Customizing the uClibc
configuration</a></li>
<li><a href="#buildroot_innards">How Buildroot works</a></li>
- <li><a href="#toolchain_standalone">Using the uClibc toolchain without
- Buildroot</a></li>
+ <li><a href="#using_toolchain">Using the uClibc toolchain</a></li>
+ <li><a href="#toolchain_standalone">Using the uClibc toolchain
+ outside of Buildroot</a></li>
<li><a href="#downloaded_packages">Location of downloaded packages</a></li>
<li><a href="#add_software">Extending Buildroot with more
Software</a></li>
<code>toolchain/uClibc/uClibc.config-locale</code>. The former
is used if you haven't selected locale support in Buildroot
configuration, and the latter is used if you have selected
- locale support.
+ locale support.</li>
<li>Run the compilation of Buildroot again</li>
<p>As said above, Buildroot is basically a set of Makefiles that download,
configure and compiles software with the correct options. It also includes
- some patches for various softwares, mainly the ones involved in the
+ some patches for various software, mainly the ones involved in the
cross-compilation tool chain (<code>gcc</code>, <code>binutils</code> and
uClibc).</p>
sub-directory per tool.</li>
<li><b>toolchain</b> (in the <code>toolchain/</code> directory) contains
- the Makefiles and associated files for all softwares related to the
+ the Makefiles and associated files for all software related to the
cross-compilation toolchain : <code>binutils</code>, <code>ccache</code>,
<code>gcc</code>, <code>gdb</code>, <code>kernel-headers</code> and
<code>uClibc</code>.</li>
<li><b>target</b> (in the <code>target</code> directory) contains the
- Makefiles and associated files for softwares related to the generation of
+ Makefiles and associated files for software related to the generation of
the target root filesystem image. Four types of filesystems are supported
: ext2, jffs2, cramfs and squashfs. For each of them, there's a
sub-directory with the required files. There is also a
this global variable, so that the needed tools gets compiled.</li>
</ol>
+ <h2><a name="using_toolchain" id="using_toolchain"></a>Using the
+ uClibc toolchain</h2>
+
+ <p>You may want to compile your own programs or other software
+ that are not packaged in Buildroot. In order to do this, you can
+ use the toolchain that was generated by Buildroot.</p>
+
+ <p>The toolchain generated by Buildroot by default is located in
+ <code>build_ARCH/staging_dir/</code>. The simplest way to use it
+ is to add <code>build_ARCH/staging_dir/bin/</code> to your PATH
+ environnement variable, and then to use
+ <code>arch-linux-gcc</code>, <code>arch-linux-objdump</code>,
+ <code>arch-linux-ld</code>, etc.</p>
+
+ <p>For example, you may add the following to your
+ <code>.bashrc</code> (considering you're building for the MIPS
+ architecture and that Buildroot is located in
+ <code>~/buildroot/</code>) :</p>
+
+<pre>
+export PATH=$PATH:~/buildroot/build_mips/bin/
+</pre>
+
+ <p>Then you can simply do :</p>
+
+<pre>
+mips-linux-gcc -o foo foo.c
+</pre>
+
+ <p><b>Important</b> : do not try to move the toolchain to an other
+ directory, it won't work. There are some hard-coded paths in the
+ <i>gcc</i> configuration. If the default toolchain directory
+ doesn't suit your needs, please refer to the <a
+ href="#toolchain_standalone">Using the uClibc toolchain outside of
+ buildroot</a> section.</p>
+
<h2><a name="toolchain_standalone" id="toolchain_standalone"></a>Using the
- uClibc toolchain without buildroot</h2>
+ uClibc toolchain outside of buildroot</h2>
<p>By default, the cross-compilation toolchain is generated inside
<code>build_ARCH/staging_dir/</code>. But sometimes, it may be useful to
fact, the name of the software is the the identifier of the target
inside the real <i>Makefile</i> that will do everything (download,
compile, install), and that we study below. Back to
- <code>Makefile.in</code>, here is an example :
+ <code>Makefile.in</code>, here is an example :</p>
<pre>
ifeq ($(strip $(BR2_PACKAGE_FOO)),y)
</pre>
<p>First of all, this <i>Makefile</i> example works for a single
- binary software. For other softwares such as libraries or more
+ binary software. For other software such as libraries or more
complex stuff with multiple binaries, it should be adapted. Look at
the other <code>*.mk</code> files in the <code>package</code>
directory.</p>