News | People | Press & Release | Introduction | Documentation | Download | Testbench | GNU Tools | Business | Mail list | Contact me |
1 Why provide GNU Tools
There are many people who do not have a copy of ADS or SDT from ARM Inc. But they may want to join the development of nnARM. So I provide GNU Tools for ARM here.
2 GNU Tools Chain
binutils-2.10.91.0.2
gcc-2.96
gdb-5.0
newlib-1.9.0
I found these tools (except newlib-1.9.0) on the RedHat 7.1 source code CD, you can also download them from ftp://ftp.gnu.org/gnu/
And newlib-1.9.0 can be downloaded from ftp://sourceware.cygnus.com/pub/newlib/
3 Configure and Build
It is very simple to configure and build, and I will describe the process below:
First, you must download all the tools packages, and place them in the same directory, assume /root/newgnu
Then unpack them with tar to the current directory, you will get four sub directories each containing source code of a package:
/root/newgnu/binutils-2.10.91.0.2
/root/newgnu/gcc-2.96-20000731
/root/newgnu/gdb-5.0
/root/newgnu/newlib-1.9.0
Because I want to build tools for various kinds of targets such as arm-elf and arm-aout, I use a new directory other than the source code directory to configure and build. Use the following commands to create new directories:
mkdir /root/newgnu/build-bin
mkdir /root/newgnu/gcc
mkdir /root/newgnu/newlib
mkdir /root/newgnu/gdb
First, you must configure and Build binutils package
I have a script that does it automaticlly
../binutils-2.10.91.0.2/configure --target=arm-elf --prefix=/usr/local -v
you must run this script in /root/newgnu/build-bin, if there is no error, then just type the following command to build:
make all
if there still is no error, type in the following command to install
make install
Next, to configure and build gcc
change to the source code directory of gcc, and add a symbolic link to the content of newlib so that configure can find newlib
ln -s /root/newgnu/newlib-1.9.0/newlib newlib
ln -s /root/newgnu/newlib-1.9.0/libgloss libgloss
then you can start to configure gcc using the following command in /root/newgnu/build-gcc
../gcc-2.96-20000731/configure --host=i686-pc-linux --target=arm-elf --prefix=/usr/local -v--with-newlib
then use the following command to build and install gcc:
make all install
if no error, then continue to build newlib, goto /root/newgnu/build-newlib and run the following command:
../newlib-1.9.0/configure --host=i686-pc-linux --target=arm-elf --prefix=/usr/local -v
if no error then run the following command to build and install:
make all install
then run the following command to configure and build and install gdb:
CC=/usr/bin/gcc
../gdb-5.0/configure --host=i686-pc-linux --target=arm-elf --prefix=/usr/local -v
make all
make install
when I run make all, the compiler tells me that it "does not know the storage size of struct tm in file /root/newgnu/gdb-5.0/gdb/rdi-share/devsw.c in line 39 and 69"
to solve this problem, just comment out these two lines, because they just declare two variables that are never used
run the above commands again and all is OK
4 How to use GNU Tools
For gcc, just use "arm-elf-gcc" to replace "gcc" to compile your program
For gdb, just use following command:
arm-elf-gdb program -x gdb-cmds
gdb-cmds is a command file for arm-elf-gdb, its content is listed below:
target sim
load
then you can debug programs with your favorite commands
Of course, please make sure that /usr/local/bin is in your path
5 insight:GUI for gdb
insight is a GUI for gdb, when you download insight, you also get gdb in the same package. I downloaded insight-5.0 from ftp://mirrors.rcn.net/pub/sourceware/gdb/releases/
The process of configuration and build of insight is very similar to gdb-5.0. In fact, Insight is GDB with a GUI, so the only difference is the path of the source code. If you place source code in the same directory as gdb, then you can use exactly the same method to build and install it
when you want to debug, just type in "arm-elf-gdb" to active the gdb with GUI