Getting Started with RTEMS for C/C++ Users
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 -i i386-rtems-binutils-collection-2.9.5.0.24-1.nosrc.rpm rpm -i i386-rtems-gcc-newlib-gcc2.95.2newlib1.8.2-7.nosrc.rpm
Because RTEMS tool RPMS are called "nosrc" to indicate that one or
more source files required to produce the RPMs are not present.
The RTEMS source RPMs 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 i386-rtems-binutils-collection-2.9.5.0.24-1.nosrc.rpm binutils-2.9.5.0.24-rtems-20000207.diff binutils-2.9.5.0.24.tar.gz i386-rtems-binutils-2.9.5.0.24.spec
Notice that there is a patch file (the .diff
file), a source archive
file (the .tar.gz
), and a file describing the build procedure and
files produced (the .spec
file). The .spec
file is placed
in the SPECS
directory under the RPM root directory.
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-rtems-binutils-2.9.5.0.24.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-base-binutils-2.9.5.0.24-1.i386.rpm i386-rtems-binutils-2.9.5.0.24-1.i386.rpm
NOTE: It may be necessary to remove the build tree in the
BUILD
directory under the RPM root directory.
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 -i rtems-base-binutils-2.9.5.0.24-1.i386.rpm rpm -i i386-rtems-binutils-2.9.5.0.24-1.i386.rpm export PATH=/opt/rtems/bin:$PATH cd <RPM_ROOT_DIRECTORY>/SPECS rpm -bb i386-rtems-gcc-2.95.2-newlib-1.8.2.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-base-gcc-gcc2.95.2newlib1.8.2-7.i386.rpm rtems-base-chill-gcc2.95.2newlib1.8.2-7.i386.rpm rtems-base-g77-gcc2.95.2newlib1.8.2-7.i386.rpm rtems-base-gcj-gcc2.95.2newlib1.8.2-7.i386.rpm i386-rtems-gcc-gcc2.95.2newlib1.8.2-7.i386.rpm i386-rtems-chill-gcc2.95.2newlib1.8.2-7.i386.rpm i386-rtems-g77-gcc2.95.2newlib1.8.2-7.i386.rpm i386-rtems-gcj-gcc2.95.2newlib1.8.2-7.i386.rpm i386-rtems-objc-gcc2.95.2newlib1.8.2-7.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.
Getting Started with RTEMS for C/C++ Users
Copyright © 1988-2000 OAR Corporation