RTEMS Logo

RTEMS 4.7.2 On-Line Library


Using RPM to Build BINUTILS GCC and NEWLIB

PREV UP NEXT Bookshelf Getting Started with RTEMS

4.1.4.1: Using RPM to Build BINUTILS GCC and NEWLIB

NOTE: The procedures described in the following sections must be completed before this step:

RPM automatically unarchives the source and applies any needed patches so you do NOT have to manually perform the procedures described Unarchiving the Tools and Applying RTEMS Patches.

This section describes the process of building binutils, gcc, and newlib using RPM. RPM is a packaging format which can be used to distribute binary files as well as to capture the procedure and source code used to produce those binary files. Before attempting to build any RPM from source, it is necessary to ensure that all required source and patches are in the SOURCES directory under the RPM root (probably /usr/src/redhat or /usr/local/src/redhat) on your machine. This procedure starts by installing the source RPMs as shown in the following example:

rpm -U rtems-4.7-i386-rtems4.7-binutils-2.17-3.src.rpm
rpm -U rtems-4.7-i386-rtems4.7-gcc-4.1.1-1.src.rpm

The RTEMS tool source RPMS are called "nosrc" to indicate that one or more source files required to produce the RPMs are not present. The RTEMS source RPMs typically include all required patches, but do not include the large .tar.gz or .tgz files for each component such as BINUTILS, GCC, or NEWLIB. These are shared by all RTEMS RPMs regardless of target CPU and there was no reason to duplicate them. You will have to get the required source archive files by hand and place them in the SOURCES directory before attempting to build. If you forget to do this, RPM is smart -- it will tell you what is missing. To determine what is included or referenced by a particular RPM, use a command like the following:

$ rpm -q -l -p rtems-4.7-i386-rtems4.7-gcc-3.2.3-1.src.rpm
gcc-3.2.3-rtems4.7-20030507a.diff
rtems-4.7-i386-rtems4.7-gcc.spec
newlib-1.11.0-rtems4.7-20030507.diff

Notice that there are patch files (the .diff files) and a file describing the build procedure and files produced (the .spec file), but no source archives (the *tar.* files). When installing this source RPM (rpm -U rtems-4.7-i386-rtems4.7-gcc-newlib-gcc3.2.3newlib1.11.0-1.src.rpm), the .spec file is placed in the SPECS directory under the RPM root directory, while the *.diff files are placed into the SOURCES directory.

Configuring and Building BINUTILS using RPM

The following example illustrates the invocation of RPM to build a new, locally compiled, binutils binary RPM that matches the installed source RPM. This example assumes that all of the required source is installed.

cd <RPM_ROOT_DIRECTORY>/SPECS
rpm -bb i386-rtems4.7-binutils-2.17.spec

If the build completes successfully, RPMS like the following will be generated in a build-host architecture specific subdirectory of the RPMS directory under the RPM root directory.

rtems-4.7-binutils-common-2.17-3.i386.rpm
rtems-4.7-i386-rtems4.7-binutils-2.17-3.i386.rpm

NOTE: It may be necessary to remove the build tree in the BUILD directory under the RPM root directory.

Configuring and Building GCC and NEWLIB using RPM

The following example illustrates the invocation of RPM to build a new, locally compiled, set of GCC and NEWLIB binary RPMs that match the installed source RPM. It is also necessary to install the BINUTILS RPMs and place them in your PATH. This example assumes that all of the required source is installed.

cd <RPM_ROOT_DIRECTORY>/RPMS/i386
rpm -U rtems-4.7-binutils-common-2.17-3.i386.rpm
rpm -U rtems-4.7-i386-rtems4.7-binutils-2.17-3.i386.rpm
export PATH=/tmp/rtemsdocs-4.7.2/bin:$PATH
cd <RPM_ROOT_DIRECTORY>/SPECS
rpm -bb i386-rtems4.7-gcc-4.1.1-newlib-1.15.0.spec

If the build completes successfully, a set of RPMS like the following will be generated in a build-host architecture specific subdirectory of the RPMS directory under the RPM root directory.

rtems-4.7-gcc-common-4.1.1-1.i386.rpm
rtems-4.7-i386-rtems4.7-newlib-1.15.0-1.i386.rpm
rtems-4.7-i386-rtems4.7-gcc-4.1.1-1.i386.rpm
rtems-4.7-i386-rtems4.7-gcc-c++-4.1.1-1.i386.rpm

NOTE: Some targets do not support building all languages.

NOTE: It may be necessary to remove the build tree in the BUILD directory under the RPM root directory.


PREV UP NEXT Bookshelf Getting Started with RTEMS

Copyright © 1988-2004 OAR Corporation