Vraag & Antwoord

OS Linux

[gentoo] Kernel compilatie geeft error???

Anoniem
Alive
11 antwoorden
  • Hmm, ik wil mijn kernel weer opnieuw compileren, maar nu krijg ik dexse berichten. Na wat instellingen te hebben veranderd blijf ik dit bercht krijgen. Wat doe ik fout?

    [code:1:2a3e728423]make[2]: Entering directory `/usr/src/linux-2.4.20-gentoo-r4/kernel'
    gcc -D__KERNEL__ -I/usr/src/linux-2.4.20-gentoo-r4/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=pentium3 -nostdinc -iwithprefix include -DKBUILD_BASENAME=sched -fno-omit-frame-pointer -c -o sched.o sched.c
    In file included from /usr/src/linux-2.4.20-gentoo-r4/include/linux/wait.h:13,
    from /usr/src/linux-2.4.20-gentoo-r4/include/linux/fs.h:12,
    from /usr/src/linux-2.4.20-gentoo-r4/include/linux/capability.h:17,
    from /usr/src/linux-2.4.20-gentoo-r4/include/linux/binfmts.h:6,
    from /usr/src/linux-2.4.20-gentoo-r4/include/linux/sched.h:9,
    from /usr/src/linux-2.4.20-gentoo-r4/include/linux/mm.h:22,
    from sched.c:19:
    /usr/src/linux-2.4.20-gentoo-r4/include/linux/kernel.h:10:20: stdarg.h: Onbekend bestand of map
    In file included from /usr/src/linux-2.4.20-gentoo-r4/include/linux/wait.h:13,
    from /usr/src/linux-2.4.20-gentoo-r4/include/linux/fs.h:12,
    from /usr/src/linux-2.4.20-gentoo-r4/include/linux/capability.h:17,
    from /usr/src/linux-2.4.20-gentoo-r4/include/linux/binfmts.h:6,
    from /usr/src/linux-2.4.20-gentoo-r4/include/linux/sched.h:9,
    from /usr/src/linux-2.4.20-gentoo-r4/include/linux/mm.h:22,
    from sched.c:19:
    /usr/src/linux-2.4.20-gentoo-r4/include/linux/kernel.h:74: parse-fout before "va_list"
    /usr/src/linux-2.4.20-gentoo-r4/include/linux/kernel.h:75: warning: functie-declaratie is geen prototype
    /usr/src/linux-2.4.20-gentoo-r4/include/linux/kernel.h:78: parse-fout before "va_list"
    /usr/src/linux-2.4.20-gentoo-r4/include/linux/kernel.h:79: warning: functie-declaratie is geen prototype
    /usr/src/linux-2.4.20-gentoo-r4/include/linux/kernel.h:83: parse-fout before "va_list"
    /usr/src/linux-2.4.20-gentoo-r4/include/linux/kernel.h:84: warning: functie-declaratie is geen prototype
    make[2]: *** [sched.o] Fout 1
    make[2]: Leaving directory `/usr/src/linux-2.4.20-gentoo-r4/kernel'
    make[1]: *** [first_rule] Fout 2
    make[1]: Leaving directory `/usr/src/linux-2.4.20-gentoo-r4/kernel'
    make: *** [_dir_kernel] Fout 2
    [/code:1:2a3e728423]
  • Hmmm,

    Lastige vraag. Ik zie niet zo 1, 2, 3 wat er fout is, maar denk dat, aangezien stdarg.h niet gevonden kan worden, de installatie van de compiler niet helemaal fris is. Uiteindelijk heb je een hele cascade van foutmeldingen gekregen omdat dit header bestand, wat gewoon onderdeel is van de compiler, niet gevonden kan worden. Mijn tip is om je compiler-installatie eens goed na te lopen; kijk eens of je handmatig 'stdarg.h' kunt detecteren in de installatiedirectory van je compiler.

    Waarom doe je trouwens niet gewoon een 'make bzImage', zoals het hoort? Zie ook eventueel mijn homepage voor een uiterst uitgebreid artikel over kernel-compilatie.

    Succes,

    Philip
  • waarschijnlijk heb je ook geen "make dep" gedraaid.
  • Ik heb de kernel geemerd. Daarn awta keuzes gemaak. Daarna make dep en make bzImage gedaan.

    Wat moet ik her-complieren als ik de compiler opnieuw wil emergen? GCC?
  • Hmmm,

    Na het ontcijferen van het laatste bericht, heb ik de volgende vraag: waarom zou je gcc opnieuw willen compileren? Als het goed is, levert je distributie gcc mee (op CD of zo).

    Na wat leeswerk begrijp ik dat je ook kunt besluiten om gcc zelf te compileren via het programma portage ('emerge gcc'), maar het compileren van een compiler is nou niet bepaald sinecure. Ik zou de standaard compiler gebruiken; die is misschien iets trager (niet geoptimaliseerd voor jou systeem), maar werkt wel. En natuurlijk worden gewoon de optimale instellingen voor jou systeem gebruikt. Daarvoor hoef je de compiler niet opnieuw te compileren!

    Kort en goed: ga niet zelf proberen de compiler te compileren, maar neem een bestaande, voorgecompileerde, versie. Waarschijnlijk zijn je problemen dan opgelost.

    Succes,

    Philip
  • Let wel even op, ik gebruik gentoo he. Geeft die ook een voorgecompileerde gcc mee?

    OKe dat ga ik vanavond uitproberen, maar ik kan het bestand stdarg.h wel gewoon vinden.
  • :evil: Arch wat is er mis? Ik het nu dat bestand stdarg.h als symlink in /usr/src/linux/include gezet. Bij een make bzIamge gaat hij nu voorbij de bovenstaand erro maar krijg ik het volgende
    [code:1:3878deadd9]
    . scripts/mkversion > .tmpversion
    gcc -D__KERNEL__ -I/usr/src/linux-2.4.20/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=i686 -DUTS_MACHINE='"i386"' -DKBUILD_BASENAME=version -c -o init/version.o init/version.cmake CFLAGS="-D__KERNEL__ -I/usr/src/linux-2.4.20/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=i686 " -C kernel
    make[1]: Entering directory `/usr/src/linux-2.4.20/kernel'
    make all_targets
    make[2]: Entering directory `/usr/src/linux-2.4.20/kernel'
    gcc -D__KERNEL__ -I/usr/src/linux-2.4.20/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=i686 -nostdinc -iwithprefix include -DKBUILD_BASENAME=ksyms -DEXPORT_SYMTAB -c ksyms.c
    In file included from /usr/src/linux-2.4.20/include/linux/modversions.h:66,
    from /usr/src/linux-2.4.20/include/linux/module.h:21,
    from ksyms.c:14:
    /usr/src/linux-2.4.20/include/linux/modules/dec_and_lock.ver:2:1: let op: "atomic_dec_and_lock" redefined
    In file included from /usr/src/linux-2.4.20/include/linux/wait.h:16,
    from /usr/src/linux-2.4.20/include/linux/fs.h:12,
    from /usr/src/linux-2.4.20/include/linux/capability.h:17,
    from /usr/src/linux-2.4.20/include/linux/binfmts.h:5,
    from /usr/src/linux-2.4.20/include/linux/sched.h:9,
    from /usr/src/linux-2.4.20/include/linux/mm.h:4,
    [/code:1:3878deadd9]
  • Het gaat nog verder. Dit is het einde van de screendump:
    [code:1:2c9de24f65]sorry verkeerd geknipt en geplakt[/code:1:2c9de24f65]
  • Het ziet er naar uit dat hij nhet toch nu doet. Het was iets met smp_num_cpus . Ik neem aan dat hij het aantal cpu's niet wist (eentje !!). Das best raar.

    Heb ik ergens iets in een conf-file fout of niet ingevuld?
  • Er is idd een optie voor het aantal cpu's. Check even het artikel van Philip, daar staat alles in.

    BTW: waarom gebruik je niet de config van een vorige kernel?
  • Hoi,

    Nog even 2 opmerkingen mijnerzijds.

    1. Een symbolic link naar stdarg.h is nou niet bepaald een elegante oplossing. Om een of andere reden is er tijdens de installatie (compilatie) van gcc toch iets fout gegaan, dus in de toekomst kan je op nieuwe problemen stuiten. Mijn advies blijft dus wel van kracht: probeer gcc eens opnieuw te installeren.

    2. Wat betreft een optie die je wel hebt ingevuld, maar waarbij je toch een foutmelding krijgt. Als je een oud .config bestand hebt gebruikt om vanuit te gaan voor je nieuwe kernel, kan dat zo af en toe gebeuren. De enige oplossing is om je installingen te noteren, de .config file weg te gooien en alles opnieuw in te stellen. Dat probleem heb ik zo af en toe ook, al zou dat ook wel eens veroorzaakt kunnen worden doordat (in mijn geval) de gepatchte SuSE kernel niet compatibel is met de standaard kernel op kernel.org.

    Maar goed, blijkbaar is het probleem (voorlopig?) opgelost.

    Groet,

    Philip

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.