Please help: R3000 cross compiler problem
David McDonald
david_mcdonald15@hotmail.com
Sat Mar 12 22:52:00 GMT 2005
Dear Sir/Madam,
Dear All,
For the past several days I'm trying to find a toolchain able to compile a
C/C++ program to ELF format for the processor MIPS R3000. I exhausted all
the solutions I found on the Internet, without any help.
What I need:
- a crosstool for MIPS R3000, running on Linux (or even Windows)
- the output should be in ELF format
- Standard C Library support with static linking is required
Purpose:
- the ELF executables will run on an "in-house" simulator. The IO system
functions (like printf) will not be used. The input and result of the
program will be added/read directly from memory
What I tried:
After trying several solutions, the best results I obtained with two of
them: an old GNUPro, and a "fresh" GNU-based crosstool. However, none of the
solution is complete.
GNUPro (release mips3264-020217)
~~~~~~~~~~~~~~~~~~~~~~
- tested on Windows, downloaded from ftp://ftp.mips.com/pub/redhat/win32/
It comes in both binary and source format. Unfortunately, the binary version
contain the libc.a library compiled for mips6 (not mips1, as I desire).
Trying to build again from sources (from the same link) came to be a
nightmare, since some of the C files contain a lot of errors, some of them
trivial (like putting a string on multiple lines, without ending previous
line with "\"), some of them not. After several hours of "pain", I gave up,
since it seems to be almost an impossible task.
GNU cross tool
~~~~~~~~~~~~~
I used the build script demo-mipsel.sh from http://kegel.com/crosstool/
(version -0.28-rc37), but before running it, I performed the following
changes:
demo-mipsel.sh:
+ commented out all lines starting with "eval" (only one was uncommented)
+ add line
eval `cat mipsel.dat gcc-3.3.4-glibc-2.3.2.dat` sh all.sh
--notest
mipsel.config:
+ in CPU section, set the CPU to R3000:
CONFIG_CPU_R3000=y
After runnign the script (demo-mipsel) I obtatined a crosstool for MIPS
R3000 Little Endian with the following configuration: gcc-3.3.4,
glibc-2.3.2, binutils-2.15, linux-2.6.8
Problems: I cannot use the switch --gc-sections for the linker. Therefore
when I attempt to link statically the library libc.a, the entire library is
included in my executable, making the executable to exceed the small memory
requiments I have. I really need to use the "--gc-sections for" in order to
reduce the executable size. The command I issued (together with the error):
mipsel-unknown-linux-gnu-gcc -static test.c -s -O2 -Wl,--gc-sections -o
test.elf
/home/dorin/MIPS-CROSS-COMPILER/opt/crosstool/mipsel-unknown-linux-gnu/gcc-3.3.4-glibc-2.3.2/lib/gcc-lib/mipsel-unknown-linux-gnu/3.3.4/../../../../mipsel-unknown-linux-gnu/bin/ld:
BFD 2.15 assertion fail
/home/dorin/MIPS-CROSS-COMPILER/crosstool-0.28-rc37/build/mipsel-unknown-linux-gnu/gcc-3.3.4-glibc-2.3.2/binutils-2.15/bfd/elfxx-mips.c:2075
If possible, please teach me how to make my executable smaller (with static
linking) or indicate me an alternative solution.
Your help will be greatly appreciated.
All my best,
David
_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today - it's FREE!
http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
More information about the Gcc-help
mailing list