[uClibc]uclibc problems

Marcel Volaart jbg.volaart at hccnet.nl
Sat Feb 22 09:37:08 UTC 2003


Hello,

I just started working with uclibc. But i have a lot of problems already.
My host system is a LFS system based on kernel 2.4.20 and glibc 2.2.5
I downloaded uclibc 0.9.18 and just built the default configaration 
(after make menuconfig).
The build is going without problems.
But if i for example compile just and empty c program (using 
i386-uclibc-gcc -v -o main main.c):
int main(void)
{
return 0;
}
the output during compiling is:

Invoked as i386-uclibc-gcc
arg[ 0] = /usr/bin/gcc
arg[ 1] = -nostdlib
arg[ 2] = -Wl,--dynamic-linker,/usr/i386-linux-uclibc/lib/ld-uClibc.so.0
arg[ 3] = -Wl,-rpath-link,/usr/i386-linux-uclibc/lib
arg[ 4] = -L/usr/i386-linux-uclibc/lib
arg[ 5] = -L/usr/i386-linux-uclibc/lib
arg[ 6] = -nostdinc
arg[ 7] = -isystem
arg[ 8] = /usr/i386-linux-uclibc/include/
arg[ 9] = -iwithprefix
arg[10] = include
arg[11] = /usr/i386-linux-uclibc/lib/crti.o
arg[12] = /usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.3/crtbegin.o
arg[13] = /usr/i386-linux-uclibc/lib/crt1.o
arg[14] = -v
arg[15] = -o
arg[16] = main
arg[17] = main.c
arg[18] = -lgcc
arg[19] = -lc
arg[20] = -lgcc
arg[21] = /usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.3/crtend.o
arg[22] = /usr/i386-linux-uclibc/lib/crtn.o
Reading specs from /usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.3/specs
gcc version 2.95.3 20010315 (release)
/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.3/cpp0 -lang-c -nostdinc -v 
-D__GNUC__=2 -D__GNUC_MINOR__=95 -D__ELF__ -Dunix -D__i386__ -Dlinux 
-D__ELF__ -D__unix__ -D__i386__ -D__linux__ -D__unix -D__linux 
-Asystem(posix) -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ 
-Di686 -Dpentiumpro -D__i686 -D__i686__ -D__pentiumpro -D__pentiumpro__ 
-isystem /usr/i386-linux-uclibc/include/ -iwithprefix include main.c 
/tmp/ccQZh98n.i
GNU CPP version 2.95.3 20010315 (release) (i386 Linux/ELF)
#include "..." search starts here:
#include <...> search starts here:
/usr/i386-linux-uclibc/include
/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.3/include
End of search list.
The following default directories have been omitted from the search path:
/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.3/../../../../include/g++-3
/usr/local/include
/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.3/../../../../i686-pc-linux-gnu/include 

/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.3/include
/usr/include
End of omitted list.
/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.3/cc1 /tmp/ccQZh98n.i -quiet 
-dumpbase main.c -version -o /tmp/cc8sC7oB.s
GNU C version 2.95.3 20010315 (release) (i686-pc-linux-gnu) compiled by 
GNU C version 2.95.3 20010315 (release).
as -V -Qy -o /tmp/ccodCoqQ.o /tmp/cc8sC7oB.s
GNU assembler version 2.12 (i686-pc-linux-gnu) using BFD version 2.12
/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.3/collect2 -m elf_i386 
-dynamic-linker /lib/ld-linux.so.2 -o main -L/usr/i386-linux-uclibc/lib 
-L/usr/i386-linux-uclibc/lib -L/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.3 
--dynamic-linker /usr/i386-linux-uclibc/lib/ld-uClibc.so.0 -rpath-link 
/usr/i386-linux-uclibc/lib /usr/i386-linux-uclibc/lib/crti.o 
/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.3/crtbegin.o 
/usr/i386-linux-uclibc/lib/crt1.o /tmp/ccodCoqQ.o -lgcc -lc -lgcc 
/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.3/crtend.o 
/usr/i386-linux-uclibc/lib/crtn.o


and try to execute it on the same platform, it gives a segmentation fault.
i386-uclibc-ldd gives the right libraries (which are also there).


I also downloaded the prebuilt toolchain in which i found the busybox 
execute linked against uclibc. If i execute this on the same platform 
there is no problem.
So what i am doing wrong in compiling this simple program.

Then i had also a problem building my own uclibc toolchain.
i downloaded the toolchain archive. I only configured the install path 
and executed it.
It is running into problems:
 /usr/src/t/toolchain/gcc-2.95/build/gcc-final/gcc/xgcc 
-B/usr/src/t/toolchain/gcc-2.95/build/gcc-final/gcc/ 
-B/usr/uclibc-i386//toolchain/i386-linux/bin/ 
-I/usr/uclibc-i386//toolchain/i386-linux/include -O2  -DCROSS_COMPILE 
-DIN_GCC     -g -O2 -I./include  -fPIC -g1  -DIN_LIBGCC2 
-D__GCC_FLOAT_NOT_NEEDED   -I. 
-I/usr/src/t/toolchain/gcc-2.95/build/gcc-20011006/gcc 
-I/usr/src/t/toolchain/gcc-2.95/build/gcc-20011006/gcc/config 
-I/usr/src/t/toolchain/gcc-2.95/build/gcc-20011006/gcc/../include -c 
-DL${name} \
      /usr/src/t/toolchain/gcc-2.95/build/gcc-20011006/gcc/libgcc2.c -o 
${name}.o; \
 if [ $? -eq 0 ] ; then true; else exit 1; fi; \
 i386-uclibc-ar rc tmplibgcc2.a ${name}.o; \
 rm -f ${name}.o; \
done
_muldi3
/usr/src/t/toolchain/gcc-2.95/build/gcc-20011006/gcc/libgcc2.c:41: 
stdlib.h: No such file or directory
/usr/src/t/toolchain/gcc-2.95/build/gcc-20011006/gcc/libgcc2.c:42: 
unistd.h: No such file or directory
make[2]: *** [libgcc2.a] Error 1
make[2]: Leaving directory 
`/usr/src/t/toolchain/gcc-2.95/build/gcc-final/gcc'
make[1]: *** [all-gcc] Error 2
make[1]: Leaving directory `/usr/src/t/toolchain/gcc-2.95/build/gcc-final'
make: *** [/usr/src/t/toolchain/gcc-2.95/build/gcc-final/.compiled] Error 2

When i searched google for this, i found out that is a problem with the 
INHIBIT_LIBC_HACK. I've built cross-compilers for ARM before and this is 
a known problems building crosscompilers, but what i don't understand is 
why i receive this error using this script? I'm certainly doing 
something wrong because i couldn't find something about this problem in 
the lists.

Hope anyone can help me a bit further.

Marcel




More information about the uClibc mailing list