Olá,
já resolvi.
Eu estava a tentar compilar um kernell 2.6.24 vanilla para depois instalar o RTAI.
Mas como tinha dito estava a ter o seguinte problema:
CC arch/x86/lib/usercopy_32.o
AR arch/x86/lib/lib.a
GEN .version
CHK include/linux/compile.h
UPD include/linux/compile.h
CC init/version.o
LD init/built-in.o
LD .tmp_vmlinux1
kernel/built-in.o: In function `timespec_add_ns':
/usr/src/linux-build-2.6.24-rtai/include/linux/time.h:177: undefined reference to `__umoddi3'
/usr/src/linux-build-2.6.24-rtai/include/linux/time.h:177: undefined reference to `__udivdi3'
kernel/built-in.o: In function `timespec_add_ns':
/usr/src/linux-build-2.6.24-rtai/kernel/time/timekeeping.c:127: undefined reference to `__udivdi3'
/usr/src/linux-build-2.6.24-rtai/kernel/time/timekeeping.c:127: undefined reference to `__umoddi3'
kernel/built-in.o: In function `timespec_add_ns':
/usr/src/linux-build-2.6.24-rtai/include/linux/time.h:177: undefined reference to `__umoddi3'
/usr/src/linux-build-2.6.24-rtai/include/linux/time.h:177: undefined reference to `__udivdi3'
/usr/src/linux-build-2.6.24-rtai/include/linux/time.h:177: undefined reference to `__umoddi3'
/usr/src/linux-build-2.6.24-rtai/include/linux/time.h:177: undefined reference to `__udivdi3'
/usr/src/linux-build-2.6.24-rtai/include/linux/time.h:177: undefined reference to `__umoddi3'
/usr/src/linux-build-2.6.24-rtai/include/linux/time.h:177: undefined reference to `__udivdi3'
make[1]: *** [.tmp_vmlinux1] Error 1
make[1]: Leaving directory `/usr/src/linux-build-2.6.24-rtai'
make: *** [debian/stamp-build-kernel] Error 2
Pelo que vi isto tem a ver com o facto de o gcc-4.3 querer optimizar um loop numa função da libraria time.h (pelo menos foi o que percebi dos artigos que li na web).
a solução também foi encontrada na web
e fica aqui :
# adicionar a arquivo include/linux/time.h: a linha a seguir ao "while" /* The following asm() prevents the compiler from * optimising this loop into a modulo operation. */ asm (.....) -----> ver em baixo.
static inline void timespec_add_ns(struct timespec *a, u64 ns)
{
ns += a->tv_nsec;
while(unlikely(ns >= NSEC_PER_SEC)) {
/* The following asm() prevents the compiler from
* optimising this loop into a modulo operation. */
asm("" : "+r"(ns));
ns -= NSEC_PER_SEC;
a->tv_sec++;
}
a->tv_nsec = ns;
}
o link para o site onde encontrei a solução:
http://www.infoblogs.com.br/view.action?contentId=39623&Erro+compilando+kernel+2622+no+OpenSuse11+gcc431Espero que faça jeito a alguém
....
Cumps,
Ivo