Ga naar inhoud
  • 0

Hulp bij compileren van kernel module gevraagd


anoniem

Vraag

Hallo allemaal Ik heb suse 8.2 en wil een klein test kernel module compileren. #include <linux/usb.h> #include <linux/module.h> #include <linux/kernel.h> int init_module(void) { info(KERN_INFO "eerste testje\n"); return 0; } void cleanup_module(void) { info(KERN_INFO "tweede testje\n"); } Alleen krijg ik een foutmelding: make hello.o cc -c -o hello.o hello.c hello.c: In function `init_module': hello.c:7: error: `KERN_INFO' undeclared (first use in this function) hello.c:7: error: (Each undeclared identifier is reported only once hello.c:7: error: for each function it appears in.) hello.c:7: error: parse error before string constant hello.c: In function `cleanup_module': hello.c:13: error: `KERN_INFO' undeclared (first use in this function) hello.c:13: error: parse error before string constant make: *** [hello.o] Error 1 Ik snap niet precies wat ik moet verbeteren. En wat moet je in etc/syslogd.conf qua instellingen invoeren om KERN_INFO berichten in je console terug te krijgen?
Link naar reactie

15 antwoorden op deze vraag

Aanbevolen berichten

  • 0
Ik heb er verder ook niet veel verstand van maar tis het laatste loodje voor een schoolopdracht wie weet wat ik in de syslog nog pziez veranderen moet ? Ik plak mijn syslog maar gewoon ff mee :) [code:1:ec2618e672] # /etc/syslog.conf - Configuration file for syslogd( 8 ) # # For info about the format of this file, see "man syslog.conf". # # print most on tty10 and on the xconsole pipe # kern.warn;*.err;authpriv.none /dev/tty10 kern.warn;*.err;authpriv.none |/dev/xconsole *.emerg * # enable this, if you want that root is informed # immediately, e.g. of logins #*.alert root # # all email-messages in one file # mail.* -/var/log/mail mail.info -/var/log/mail.info mail.warn -/var/log/mail.warn mail.err /var/log/mail.err # # # all news-messages # # these files are rotated and examined by "news.daily" news.crit -/var/log/news/news.crit news.err -/var/log/news/news.err news.notice -/var/log/news/news.notice # enable this, if you want to keep all news messages # in one file #news.* -/var/log/news.all # # Warnings in one file # *.=warn;*.=err -/var/log/warn *.crit /var/log/warn # # save the rest in one file # *.*;mail.none;news.none -/var/log/messages # # enable this, if you want to keep all messages # in one file #*.* -/var/log/allmessages # # Some foreign boot scripts require local7 # local0,local1.* -/var/log/localmessages local2,local3.* -/var/log/localmessages local4,local5.* -/var/log/localmessages local6,local7.* -/var/log/localmessages [/code:1:ec2618e672] dit laatste heb ik er dus aan toegevoegd [code:1:ec2618e672] *.=info;*.=notice /usr/adm/messages *.=debug /usr/adm/debug kern.info /dev/console kern.info /dev/tty6 kern.info /usr/adm/kerninfo kern.info -/var/log/info[/code:1:ec2618e672]
Link naar reactie
  • 0
de kernel was nog niet bij mij gecompileerd dus dat heb ik eerst gedaan, maar nu krijg ik bij make dep deze error [code:1:f7e28da11b]make dep gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -o scripts/mkdep scripts/ mkdep.c In file included from /usr/include/bits/posix1_lim.h:126, from /usr/include/limits.h:144, from /usr/lib/gcc-lib/i486-suse-linux/3.3/include/limits.h:122, from /usr/lib/gcc-lib/i486-suse-linux/3.3/include/syslimits.h:7 , from /usr/lib/gcc-lib/i486-suse-linux/3.3/include/limits.h:11, from scripts/mkdep.c:35: /usr/include/bits/local_lim.h:36:26: linux/limits.h: No such file or directory scripts/mkdep.c: In function `add_path': scripts/mkdep.c:221: error: `PATH_MAX' undeclared (first use in this function) scripts/mkdep.c:221: error: (Each undeclared identifier is reported only once scripts/mkdep.c:221: error: for each function it appears in.) scripts/mkdep.c:221: warning: unused variable `resolved_path' make: *** [scripts/mkdep] Error 1 [/code:1:f7e28da11b] kom maar op met alle suggesties :)
Link naar reactie
  • 0
[quote:14ebeabff0="w.roosenburg"]Hij geeft telkens de melding "undeclared identifier" ? dan ben je gewoon een header file vergeten te includen. zoek op waar deze zich bevinden in de man-pages en je bent er. Heb je ze zelf gemaakt, check dan je makefile om te kijken of je je libs wel meelinkt.[/quote:14ebeabff0] Hoi roosenburg, na de installatie van suse 8.2, is het dan nog eigelijk nodig dat je een kernel versie installeerd of zit dat ook in de installatie ? Oh en bij de laatste foutmelding in make dep heb ik inderdaad in de script mkdep.c een header toegevoegd [code:1:14ebeabff0]include <linux/limits.h>[/code:1:14ebeabff0] geloof ik, onder [code:1:14ebeabff0]include <limits.h>[/code:1:14ebeabff0] ik las dit ergens op het internet. Maar helaas het werkt niet en ik zou ook niet weten wat ik nou zelf moet includen, de script zat in de installatie, ik heb het niet zelf gemaakt :-?
Link naar reactie
  • 0
Staat de file limits.h wel op je schijf? Kijk daar eerst eens naar. En volgens mij installeert SuSe 8.2 niet standaard de kernel source op je hd. //edit Die PATH_MAX komt idd uit limits.h. Zoek eens op of je die fysiek op schijf hebt staan. Zo ja, dan kun je gcc er naar toe verwijzen met de optie [code:1:2dd80a8bfb]--include-dir=[/code:1:2dd80a8bfb]
Link naar reactie
  • 0
Met de installatie via www.kernel.org zou die limits.h er toch ook mee geleverd moeten zijn of moet ik het nog ergens anders zoeken ?Ik heb op die site alleen linux-2.4.9.tar.gz gedownload. Ik dacht dat alles daarmee wel geinstalleerd zou zijn. Verder heb ik dus suse 8.2 Als ik suse 8.0 zou hebben, zou ik deze problemen eigelijk ook nog krijgen ? Ik ben maar een linux leek maar ik leer weer eens elke dag wat bij merk ik. :)
Link naar reactie
  • 0
sorrie :oops: ben ook maar een linux kneus uitvoer[code:1:bf29b2a9d1]/usr/lib/perl5/site_perl/5.8.0/i586-linux-thread-multi/Tk/pTk/compat/limits.h /usr/lib/gcc-lib/i486-suse-linux/3.3/include/syslimits.h /usr/lib/gcc-lib/i486-suse-linux/3.3/include/limits.h /usr/src/linux-2.4.7/include/linux/limits.h /usr/src/linux-2.4.7/include/asm-arm/limits.h /usr/share/doc/packages/wine/doc-html/dbg-limits.html /usr/include/limits.h /root/linux/include/linux/limits.h /root/linux/include/asm-arm/limits.h [/code:1:bf29b2a9d1] mmm versie 2.4.7 heeft het wel en versie 2.4.9 niet
Link naar reactie
  • 0
Nee hoor ;) Hmmm je hebt de header files dus wel. Raar :o Hier struikel ik over: [quote:b2f96315dc] /usr/include/bits/local_lim.h:36:26: linux/limits.h: No such file or directory [/quote:b2f96315dc] Open die .h eens en kijk wat die include? Of probeer eens te compileren met [code:1:b2f96315dc] --include-dir=/usr/lib/gcc-lib/i486-suse-linux/3.3/include [/code:1:b2f96315dc] Ik kwam in een ander project ook deze meldingen tegen, ik moest toen hercompileren met deze optie om zo de limits.h uit de compiler-lib mee te linken. Dat hielp overigens wel. Wanneer moet je het inleveren trouwens? :)
Link naar reactie
  • 0
Zal ik de zelf toegevoegde code [code:1:8ebade0b60]linux/limits.h[/code:1:8ebade0b60] in de script van mkdep. h dan maar weer weghalen ? want volgens mij komt het daar vandaan. dit is nu wat mkdep.c wel include [code:1:8ebade0b60]#include <ctype.h> #include <fcntl.h> #include <limits.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/fcntl.h> #include <sys/mman.h> #include <sys/stat.h> #include <sys/types.h> [/code:1:8ebade0b60] Verder geeft het dezelfde eroor alsik eht weglaat of erbij laat Hoe en waar kun je controleren of je de header files eigelijk ook daadwerkelijk hebt ? Dalijk heb ik ze geeneens .... Of hoort het gewoon meegeleverd te worden als je een kernel installeerd uit pakt en compileerd ? Ik moest het allang al inleveren maar ik doe er lekker een hele zomer vakantie rustig over, zolang ik nog geen stageplek heb heeft het tochageen zin om dit haastig in te leveren :) Als ik al wel een plek had was ik wat sneller :D
Link naar reactie
  • 0
Ik weet wel hoe je moet compileren maar je komt met een hele code aan en dan raak ik al het spoor bijster. gewone c-programmas compileren is geloof ik gcc test.c een kernel module compileren [code:1:b85ff7d8c5]make test.o gcc-Wall-O__KERNEL__--DMODULE--l/usr/scr/linux/include -c-o test.o test.c [/code:1:b85ff7d8c5] maar voor ik dat EINDELIJK kan doen moet ik eerst die kernel goed geinstalleerd krijgen dus :o Dus vertel aub waar ik die hele code van jou kwijt kan.
Link naar reactie

Doe mee aan dit gesprek

Om te reageren, moet je eerst inloggen. Dit doe je door rechtsboven op inloggen te klikken.

Gast
Antwoord op deze vraag...

×   Geplakt als verrijkte tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...