Fórum Ubuntu Linux - PT
Suporte Técnico => Sistema => Tópico iniciado por: ivodalves em 11 de Novembro de 2008, 21:37
-
Olá,
tenho o seguinte problema:
estou a usar o Ubuntu 8.10 e tenho de compilar um kernel com um patch do RTAI
para criar um sistema de tempo real.
Estava tudo a correr bem até ter de compilar o kernel.
O kernel com que a máquina arranca é o que estou a usar é o 2.6.27-7-generic
O RTAI só tem patch para o kernel 2.6.23 (vanilla). Então fui buscar o kernell. Adicionei o patch sem problemas.
fiz make menucoinfig, configurei tudo conforme o manual e pus a compilar.
e após alguns minutos da-me o seguinte erro:
HOSTCC lib/gen_crc32table
GEN lib/crc32table.h
CC lib/crc32.o
CC lib/genalloc.o
LD lib/reed_solomon/built-in.o
LD lib/zlib_deflate/built-in.o
CC lib/zlib_inflate/inffast.o
CC lib/zlib_inflate/inflate.o
CC lib/zlib_inflate/inftrees.o
CC lib/zlib_inflate/inflate_syms.o
LD lib/zlib_inflate/zlib_inflate.o
LD lib/zlib_inflate/built-in.o
CC lib/textsearch.o
CC lib/percpu_counter.o
CC lib/audit.o
LD lib/built-in.o
CC lib/argv_split.o
CC lib/bitmap.o
CC lib/bug.o
CC lib/cmdline.o
CC lib/cpumask.o
CC lib/ctype.o
CC lib/dec_and_lock.o
CC lib/dump_stack.o
CC lib/extable.o
CC lib/idr.o
CC lib/int_sqrt.o
CC lib/ioremap.o
CC lib/irq_regs.o
CC lib/klist.o
CC lib/kobject.o
lib/kobject.c: In function ‘kobject_kset_add_dir’:
lib/kobject.c:545: warning: format not a string literal and no format arguments
CC lib/kobject_uevent.o
CC lib/kref.o
CC lib/prio_tree.o
CC lib/radix-tree.o
CC lib/rbtree.o
CC lib/reciprocal_div.o
CC lib/rwsem.o
CC lib/semaphore-sleepers.o
CC lib/sha1.o
CC lib/string.o
CC lib/vsprintf.o
AR lib/lib.a
CC arch/i386/lib/msr-on-cpu.o
LD arch/i386/lib/built-in.o
CC arch/i386/lib/bitops.o
AS arch/i386/lib/checksum.o
CC arch/i386/lib/delay.o
AS arch/i386/lib/getuser.o
CC arch/i386/lib/memcpy.o
AS arch/i386/lib/putuser.o
AS arch/i386/lib/semaphore.o
CC arch/i386/lib/string.o
CC arch/i386/lib/strstr.o
CC arch/i386/lib/usercopy.o
AR arch/i386/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 `getnstimeofday':
(.text+0x26c73): undefined reference to `__umoddi3'
kernel/built-in.o: In function `getnstimeofday':
(.text+0x26c93): undefined reference to `__udivdi3'
kernel/built-in.o: In function `do_gettimeofday':
(.text+0x26dc0): undefined reference to `__udivdi3'
kernel/built-in.o: In function `do_gettimeofday':
(.text+0x26ddb): undefined reference to `__umoddi3'
kernel/built-in.o: In function `timekeeping_resume':
timekeeping.c:(.text+0x27006): undefined reference to `__umoddi3'
timekeeping.c:(.text+0x27026): undefined reference to `__udivdi3'
kernel/built-in.o: In function `update_wall_time':
(.text+0x27450): undefined reference to `__umoddi3'
kernel/built-in.o: In function `update_wall_time':
(.text+0x27470): undefined reference to `__udivdi3'
kernel/built-in.o: In function `update_wall_time':
(.text+0x278cb): undefined reference to `__umoddi3'
kernel/built-in.o: In function `update_wall_time':
(.text+0x278eb): undefined reference to `__udivdi3'
make[1]: ** [.tmp_vmlinux1] Erro 1
make[1]: Saindo do diretório `/usr/src/linux-2.6.23'
make: ** [debian/stamp-build-kernel] Erro 2
alguem pode ajudar?
Obrigado,
Ivo
-
que manual você ta falando? você já deu uma olhada nos tópicos mantidos pela comunidade sobre isso? digo, alguns tópicos muito bons é so procurar! e quando você for por erro poe entre code
assim oh!
beleza?
PS: verifique se você realmente baixou o kernel certo para esse tal patch RTAI
-
olá,
sim verfiquei.
Estou a seguir "how to istall rtai in hubuntu hardy" de cristovão sousa ... e não funciona.
Aceitam-se sugestões. ???
-
ta punk, to sem idéias... talvez você devesse ver esse tópico, que apesar de ser kubuntu funciona para todos os outros.
http://ubuntuforum-br.org/index.php/topic,29799.0.html (http://ubuntuforum-br.org/index.php/topic,29799.0.html)
todo mundo fala bem do kernel omnislash do Hqxriven
-
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 ;D
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+gcc431
Espero que faça jeito a alguém :) ....
Cumps,
Ivo