Portál AbcLinuxu, 6. května 2025 07:32
http://www.linuxexpres.cz/praxe/vyvoj-jadra-ii-jednoduchy-modul
Zasekl jsem se pri spusteni prikazu "make", ktery hlasi chyb. Pulhodina googleni mi rekla, ze problem bude zrejme v neexistjicim souboru ci adresare (casta pricina chybove hlasky). Jenze co presn chybi? NEbo je to v necem jinem?
[root@fed16 kernel_prog]# make make -C /lib/modules/`uname -r`/build M=`pwd` make[1]: Entering directory `/usr/src/kernels/3.3.2-6.fc16.x86_64' make[2]: *** No rule to make target `/home/martin/kernel_prog/mymodule.c', needed by `/home/martin/kernel_prog/mymodule.o'. Stop. make[1]: *** [_module_/home/martin/kernel_prog] Error 2 make[1]: Leaving directory `/usr/src/kernelV adresari se zdrojakem a Makefile se vytvori soubor built-in.o , a to je asi tak vsechno. Makefile mam uplne stejne jako v tom clanku, prikazy jsou oddelene TAB, takze v tom by snad problem byt nemel
KDIR = /lib/modules/`uname -r`/build obj-m := mymodule.o all: make -C $(KDIR) M=`pwd` clean: make -C $(KDIR) M=`pwd` cleanAdresar se zdrojem kernelu pak vypada takto:
[martin@fed16 3.3.2-6.fc16.x86_64]$ ls arch firmware ipc Makefile samples System.map vmlinux.id block fs Kconfig mm scripts tools crypto include kernel Module.symvers security usr drivers init lib net sound virtMohl by me nekdo navest spravnym smerem?
Řešení dotazu:
make
je program, ktorého úlohou je podľa predpisu napísanom v súbore Makefile
, spustiť sériu príkazov. V programovaní tými príkazmi sú spravidla spustenia kompilátora, linkera, prípadne ďalších príkazov, ktoré zo zdrojákov vyrobia program (resp. v tvojom prípade modul jadra).
Makefile nehovorí nič o tom, čo má ten program (/modul) počas svojho vykonávania spraviť.
To je popísané v súbore so zdrojákom (zdrojovým kódom), ktorý musí napísať programátor. V prípade, že programuješ v jazyku C, tak musíš vytvoriť súbor s príponou .c, pre ktorý make spustí kompilátor a vyrobí z neho "object" - súbor s príponou .o. Makefile potom definuje ďalšie kroky, ktoré sa s tým .o majú udiať.
Počas tvojho pokusu make spustíl kompilátor a povedal mu, že má vyrobiť mymodule.o z mymodule.c. Kompilátor s tým začal, ale hneď skončil pretože mymodule.c nenašiel.
Môj dojem je, že nevieš ako funguje make (napr. čo robia parametre, ktoré si mu dal), nemáš skúsenosť s programovaním a zvolil si si pre začiatok dosť pokročilú tému. Začni s niečím ľahším, alebo sa pusti do študovania dokumentácie.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.