Building a uclibc based toolchain

stl st.lambert02 at gmail.com
Thu Oct 27 08:27:32 UTC 2011


Thanks Rob and Jayant for your answers.
I have finally complete the GCC build with --enable-language=c,c++.

> The uClibc libraries are to be installed at:
> prefix/<target>-uclinux/runtime/usr e.g. prefix/arm-uclinux/runtime/usr
>
> One should copy both 'include' and 'lib' contents at this path.
> You may need to create appropriate folders for multiple variants e.g. I copy
> non-PIC libraries at above path whereas PIC libraries in the separate
> subfolder at the same path.

Ok I have made some tries, and finally GCC seems to expect the uClibc headers
in ($PREFIX)/($TARGET)/include and libraries in ($PREFIX)/($TARGET)/lib.

It is not functionnal yet. I have tried to compile a simple
hello_world with a call to the
write system-call, but the compilation crashes with these errors:

 warning: cannot find entry symbol start; defaulting to 80000000
 toolchain-uclibc/cross/lib/gcc/linux-uclibc/4.5.3/crtbegin.o: In
function `.L3':
 crtstuff.c:(.text+0x56): relocation truncated to fit: 28 bit call
against undefined symbol
`__deregister_frame_info'
 toolchain-uclibc/cross/lib/gcc/linux-uclibc/4.5.3/crtbegin.o: In
function `.LFB5':
 crtstuff.c:(.text+0x98): relocation truncated to fit: 28 bit call
against undefined symbol
`__register_frame_info'

Ok. These function seems to be declared but not defined.
Why are these functions used?

In my uclibc port, I have a crt0.c startup file which contains
'_start' entry symbol.
It was working fine with my port of uClinux.
Now, a crt1.c or crt1.S seem to be expected.

What is the difference between crt0.c and crt1.c ?
Should I define 'start' or '_start' into my startup code?

Thanks in advance for your help.


More information about the uClibc mailing list