Linux kodols

Linux kodola makefile paskaidrots

Linux kodola makefile paskaidrots
Programmatūras izstrādē lielu kodu krātuvju izveides un pārvaldības process var viegli kļūt ļoti sarežģīts.

Lai pārvaldītu un samazinātu šo sarežģītību, programmatūras izstrādātāji organizē kodu mazos failos, kas saista ar noteiktiem moduļiem. Izstrādātāji var apkopot katru no šiem failiem atsevišķi un pēc tam tos sasaistīt, lai izveidotu galīgo programmatūras izpildāmo failu.

Piemērs tam ir C projekti, kas sastāv no pirmkodu failiem .c paplašinājumi un programmatūras saskarnes .h pagarinājumi. Katrs avota fails tiek apkopots kopā ar galvenes failiem, lai izveidotu. o objekti, kas sasaistīti, izmantojot bibliotēkas, tādējādi izveidojot izpildāmos failus.

Lai veiktu šo procesu, programmatūras izstrādātāji izmanto rīkus, piemēram, Make, lai automatizētu būvēšanas procesu un nepieciešamās failu atkarības. Make izmanto Makefiles, lai pārvaldītu kompilācijas procesa uzvedību.

GNU Make rīki nodrošina noteikumu un konvenciju kopumu, kas tiek izmantoti Makefiles izveidošanai un samazina efektivitātes uzlabošanas sarežģītību.

Šajā apmācībā mēs īpaši apspriedīsim Linux kodola Makefiles Kconfig un Kbuild.

Pirms mēs sākam, ir labi atzīmēt, ka šajā rakstā nav izlikšanās, ka mācītu visu par kodola veidošanas sistēmu. Tomēr mēs sniedzam augsta līmeņa pārskatu par vmlinux attēla un moduļu izveidi.

Ja vēlaties saņemt informāciju, kas nav šīs apmācības darbības joma, labākai informācijai iesakām šo resursu:

https: // linkfy.to / goMakefilesDocs

https: // linkfy.uz / gnuMake

Kodola Makefiles: pārskats

Kodola veidošanas sistēma, saukta arī par konfigurēšanas sistēmu, ir būtisks rīks tiem, kam tā nepieciešama, un tā ir bijusi jau kādu laiku. Tomēr ne visi izmantos šo sistēmu; pat draiveri un citi zema līmeņa programmatūras izstrādātāji to reti izmanto. Tā kā jūs to lasāt, tas nozīmē, ka vēlaties uzzināt vairāk par kodola veidošanas sistēmu.

Tādējādi mēs apspriedīsim, kā tiek apkopots kodols, un apspriedīsim Kbuild un Kconfig sistēmu, lai jūs varētu labāk tos saprast.

Kodola Makefile ir pieci galvenie komponenti:

  1. Makefile: Šis ir top make fails, kas atrodas avota saknē.
  2. arch / $ (ARCH) Makefile: Šī ir arka Makefile; tas darbojas kā top Makefile papildinājums.
  3. .config: Šis ir kodola konfigurācijas fails.
  4. Skripti / Makefile.*: Tas nosaka noteiktos noteikumus visiem kbuild Makefiles.
  5. Kbuild Makefiles: Makefiles ir aptuveni 500 kbuild, un tās nav ļoti viegli lasīt. Apsveriet failu, piemēram:

https: // eliksīrs.bootlin.com / linux / latest / source / scripts / Kbuild.iekļaut

Kconfig

Kconfig failā ir moduļi, kas palīdz izmantot make * config. Tas palīdz kodolam veikt selektīvas konfigurācijas, radot modularitāti un pielāgojamību kodola veidošanas procesam.

Kconfig sistēmā ir norādīti dažādi konfigurācijas mērķi. Lai skatītu pieejamos mērķus, varat izmantot palīdzību make. Šos mērķus apstrādā dažādas programmas, kuras būvniecības laikā nodrošina kodols.

Daži no Kconfig mērķiem ietver:

padarīt linux-windriver.gconfig
padarīt linux-windriver.xconfig

PIEZĪME: Lai izmantotu gconfig un xconfig, resursdatora sistēmā jābūt instalētiem QT izstrādes rīkiem.

Apsveriet sekojošo:

Defconfig koda momentuzņēmums no šī resursa:

https: // eliksīrs.bootlin.com / linux / v5.9 / source / scripts / kconfig / Makefile # L98

1. defconfig: $ (obj) / conf
2. ifneq ($ (aizstājējzīme $ (srctree) / arch / $ (SRCARCH) / configs / $ (KBUILD_DEFCONFIG)),)
3. @ $ (kecho) "*** Noklusējuma konfigurācija ir balstīta uz '$ (KBUILD_DEFCONFIG)'"
4. $ (Q) $< $(silent) --defconfig=arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) $(Kconfig)
5. cits
6. @ $ (kecho) "*** Noklusējuma konfigurācija ir balstīta uz mērķi '$ (KBUILD_DEFCONFIG)'"
7. $ (Q) $ (MAKE) -f $ (srctree) / Makefile $ (KBUILD_DEFCONFIG)
8. endif
9.
10. % _defconfig: $ (obj) / conf
11. $ (Q) $< $(silent) --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig)
12.
13. configfiles = $ (aizstājējzīme $ (srctree) / kodols / configs / $ @ $ (srctree) / arch / $ (SRCARCH) / configs / $ @)
14.
15. %.config: $ (obj) / conf
16. $ (ja $ (call configfiles) ,, $ (kļūda Šim mērķim šajā arhitektūrā nav konfigurācijas))
17. $ (Q) $ (CONFIG_SHELL) $ (srctree) / skripti / kconfig / merge_config.sh -m .config $ (configfiles)
18. $ (Q) $ (MAKE) -f $ (srctree) / Makefile olddefconfig

Oldconfig koda momentuzņēmums no šī resursa:

https: // eliksīrs.bootlin.com / linux / v5.9 / source / scripts / kconfig / conf.c # L694

1. gadījums olddefconfig:
2. noklusējums:
3. pārtraukums;
4.
5.
6. ja (input_mode == savedefconfig)
7. ja (conf_write_defconfig (defconfig_file))
8. fprintf (stderr, "n *** Kļūda saglabājot defconfig uz:% s \ n \ n",
9. defconfig_file);
10. atgriezties 1;
11.
12. else if (ievades_režīms != listnewconfig && input_mode != helpnewconfig)
13. ja (!no_conf_write && conf_write (NULL))
14. fprintf (stderr, "\ n *** Kļūda, rakstot konfigurāciju.\ n \ n ");
15. izeja (1);
16.
17.
18. / *
19. * Izveidot automātisko.konf, ja tāda nav.
20. * Tas novērš GNU Make 4.1 vai vecāki no izstarošanas
21. * "include / config / auto.conf: Nav šāda faila vai direktorija "
22. * augstākā līmeņa Makefile
23. *
24. * syncconfig vienmēr izveido vai atjaunina automātisko.konf, jo tā ir
25. * izmantots būvēšanas laikā.
26. * /
27. ja (conf_write_autoconf (sync_kconfig) && sync_kconfig)
28. fprintf (stderr,
29. "\ n *** Kļūda konfigurācijas sinhronizācijas laikā.\ n \ n ");
30. atgriezties 1;
31.
32.
33. atgriešanās 0;
34.

Kconfig sistēmā ir daudz mērķu. Dažas no tām ir config un menuconfig.

Kā jau minēts, mērķus apstrādā dažādas programmas resursdatora sistēmās, nodrošinot GUI vai komandrindu. Kconfig rīkus var atrast kodola avotā mapē / scripts / Kconfig.

https: // eliksīrs.bootlin.com / linux / latest / source / scripts / kconfig

https: // eliksīrs.bootlin.com / linux / latest / source / scripts / kconfig / Makefile

Pirmais process parasti ir Kconfig faila nolasīšana saknes direktorijā, kas tiek izmantots sākotnējās konfigurācijas datu bāzes izveidošanai. Turpinot procesu, datu bāze tiek atjaunināta, lasot failus šādā secībā:

.konfigurēt
/ lib / moduļi / $ (apvalks, uname-r) /.konfigurēt
/ etc / kernel-config
/ boot / config - $ (apvalks, uname-r)
ARCH_DEFCONFIG
arch / $ (ARCH) / defconfig

.konfigurācijas fails tiek nomests uz syncconfig, kas akceptē .konfigurācijas fails kā ievade. Tas apstrādā failu un izvada failus, kurus pēc tam klasificē dažādās kategorijās, piemēram:

Kbuild faili

Gandrīz visi kodola faili ir Kbuild Makefiles, kas izmanto Kbuild infrastruktūru, kas ir rekursīva veidošanas funkcija. Rekursīvā Make ir veids, kā Makefile izmantot komandu Make kā komandu. Rekursija ir ļoti noderīga, sastādot lielu projektu.

Kbuild darbojas, atsaucoties uz visiem failiem, kurus mēs pieminējām iepriekšējā sadaļā.

Kbuild sistēma veido komponentus, izmantojot augšējo Makefile failu, kas konfigurācijas failos iekļauj arhīvu Makefiles ar nosaukumu arch / $ (ARCH) / Makefile. Rekursīvi nolaižas apakšdirektorijās, izsaucot komponentu Make, izmantojot skriptu rutīnas / Makefile.*. Pēc tam Kbuild balstās uz blakus esošo objektu un sasaista tos objektos, izveidojot vmlinux.

Lai uzzinātu vairāk par Kbuild Makefiles izmantoto sintaksi, skatiet dokumentāciju.

Apsveriet šādu skriptu.

https: // github.com / torvalds / linux / blob / master / scripts / link-vmlinux.sh

O objekta faili, ko izmanto vmlinux izveidošanai, vispirms tiek apkopoti attiecīgajā iebūvētajā failā .faili kā var KBUILD_VMLINUX_INIT, MAIN, LIBS. Tie ir komponēti vmlinux.

https: // github.com / torvalds / linux / blob / master / scripts / Makefile.būvēt

Secinājums

Šajā ceļvedī mēs apskatījām Kbuild un Kconfig sistēmas kodola būvēšanas sistēmā un kā tā darbojas. Kā mēs minējām apmācības sākumā, apspriestās tēmas ir plašas un tās nevar aplūkot vienā apmācībā.

WinMouse ļauj jums pielāgot un uzlabot peles rādītāja kustību Windows datorā
Ja vēlaties uzlabot peles rādītāja noklusējuma funkcijas, izmantojiet bezmaksas programmatūru WinMouse. Tas pievieno vairāk funkciju, kas palīdzēs jum...
Peles kreisā klikšķa poga nedarbojas operētājsistēmā Windows 10
Ja ar klēpjdatoru vai galddatoru izmantojat īpašu peli, bet nedarbojas peles kreisās klikšķa poga kādu iemeslu dēļ operētājsistēmā Windows 10/8/7 šeit...
Rakstot Windows 10, kursors lec vai pārvietojas nejauši
Ja atklājat, ka peles kursors automātiski, nejauši lec vai pārvietojas pats, rakstot Windows klēpjdatorā vai datorā, daži no šiem ieteikumiem var palī...