Thomas Petazzoni writes:

ello,

Enclosed is a small documentation update. It adds a section that answers
a very often asked question : "How to use the uClibc toolchain generated
by Buildroot".

Erik, could you apply it if you agree with the modifications ?

Thanks,

Thomas
This commit is contained in:
Eric Andersen 2004-12-28 19:15:20 +00:00
parent b5a211c68e
commit a161b51c54

View File

@ -18,7 +18,7 @@
<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>
@ -30,8 +30,9 @@
<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>
@ -246,7 +247,7 @@
<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>
@ -262,7 +263,7 @@
<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>
@ -277,13 +278,13 @@
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
@ -347,8 +348,44 @@
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
@ -412,7 +449,7 @@ config BR2_PACKAGE_FOO
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)
@ -486,7 +523,7 @@ endif
</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>