Линук кернел

Објашњено Макефиле Линук кернела

Објашњено Макефиле Линук кернела
У развоју софтвера, процес стварања и управљања великим спремиштима кода може постати врло сложен.

Да би управљали и смањили ову сложеност, програмери софтвера организују код у мале датотеке које воде до одређених модула. Програмери могу сваку од ових датотека компајлирати одвојено, а затим их повезати како би створили коначну извршну датотеку софтвера.

Пример за то су Ц пројекти који се састоје од датотека изворног кода у .ц проширења и софтверски интерфејси у .х продужеци. Свака изворна датотека се компајлира заједно са датотекама заглавља за стварање. о објекти повезани заједно помоћу библиотека, стварајући тако извршне датотеке.

Да би извели овај процес, програмери софтвера користе алате, као што је Маке, за аутоматизацију процеса израде и потребних зависности датотека. Маке користи Макефилес за управљање понашањем процеса компајлирања.

Алати ГНУ Маке пружају скуп правила и конвенција коришћених за креирање Макефиле-а и смањење сложености у побољшању ефикасности.

У овом упутству ћемо посебно разговарати о Линук Кернел Макефиле-овима Кцонфиг и Кбуилд.

Пре него што започнемо, добро је напоменути да овај чланак не претендује да подучава све о систему Кернел Буилд. Међутим, пружамо преглед на високом нивоу о изградњи вмлинук слике и модула.

Ако желите информације изван опсега овог водича, препоручујемо следећи ресурс за боље информације:

хттпс: // линкфи.на / гоМакефилесДоцс

хттпс: // линкфи.у / гнуМаке

Датотеке кернела: преглед

Кернел Буилд Систем, који се назива и систем за конфигурисање, основни је алат - за оне којима је потребан - који постоји већ неко време. Међутим, неће сви користити овај систем; чак га и управљачки програми и други програмери ниског нивоа ретко користе. Будући да ово читате, значи да желите да сазнате више о систему градње језгра.

Стога ћемо разговарати о томе како се кернел компајлира и разговарати о систему Кбуилд и Кцонфиг како бисте их могли боље разумети.

Кернел Макефиле има пет основних компоненти:

  1. Макефиле: Ово је горња датотека израде која се налази у изворном корену.
  2. арцх / $ (АРЦХ) Макефиле: Ово је лук Макефиле; делује као додатак врхунском Макефиле-у.
  3. .цонфиг: Ово је датотека конфигурације језгра.
  4. Скрипте / Макефиле.*: Ово дефинише постављена правила за све кбуилд маке датотеке.
  5. Кбуилд Макефилес: Постоји око 500 кбуилд Макефиле-а, и није их лако прочитати. Размотрите датотеку као што је:

хттпс: // еликсир.боотлин.цом / линук / најновије / извор / скрипте / Кбуилд.укључују

Кцонфиг

Датотека Кцонфиг садржи модуле који помажу приликом коришћења маке * цонфиг. Помаже кернелу да направи селективне конфигурације, стварајући модуларност и прилагодљивост за процес изградње кернела.

Постоје различити циљеви конфигурације назначени системом Кцонфиг. Помоћу маке маке можете погледати доступне циљеве. Те циљеве обрађују различити програми које језгра пружа током процеса израде.

Неки од Кцонфиг циљева укључују:

направите линук-виндривер.гцонфиг
направите линук-виндривер.кцонфиг

БЕЛЕШКА: Да бисте користили гцонфиг и кцонфиг, требали бисте имати инсталиране КТ развојне алате на хост систему.

Узмите у обзир следеће:

Снимак кода Дефцонфиг из следећег ресурса:

хттпс: // еликсир.боотлин.цом / линук / в5.9 / соурце / сцриптс / кцонфиг / Макефиле # Л98

1. дефцонфиг: $ (обј) / цонф
2. ифнек ($ (вилдцард $ (срцтрее) / арцх / $ (СРЦАРЦХ) / цонфигс / $ (КБУИЛД_ДЕФЦОНФИГ)),)
3. @ $ (кецхо) "*** Подразумевана конфигурација се заснива на '$ (КБУИЛД_ДЕФЦОНФИГ)'"
4. $ (К) $< $(silent) --defconfig=arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) $(Kconfig)
5. иначе
6. @ $ (кецхо) "*** Подразумевана конфигурација заснива се на циљу '$ (КБУИЛД_ДЕФЦОНФИГ)'"
7. $ (К) $ (МАКЕ) -ф $ (срцтрее) / Макефиле $ (КБУИЛД_ДЕФЦОНФИГ)
8. ендиф
9.
10. % _дефцонфиг: $ (обј) / цонф
11. $ (К) $< $(silent) --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig)
12.
13. цонфигфилес = $ (вилдцард $ (срцтрее) / кернел / цонфигс / $ @ $ (срцтрее) / арцх / $ (СРЦАРЦХ) / цонфигс / $ @)
14.
15. %.конфигурација: $ (обј) / цонф
16. $ (иф $ (цалл цонфигфилес) ,, $ (грешка Не постоји конфигурација за овај циљ на овој архитектури))
17. $ (К) $ (ЦОНФИГ_СХЕЛЛ) $ (срцтрее) / скрипте / кцонфиг / мерге_цонфиг.сх-м .цонфиг $ (цонфигфилес)
18. $ (К) $ (МАКЕ) -ф $ (срцтрее) / Макефиле олддефцонфиг

Снимак кода Олдцонфиг из следећег ресурса:

хттпс: // еликсир.боотлин.цом / линук / в5.9 / соурце / сцриптс / кцонфиг / цонф.ц # Л694

1. цасе олддефцонфиг:
2. Уобичајено:
3. пауза;
4.
5.
6. иф (инпут_моде == саведефцонфиг)
7. иф (цонф_врите_дефцонфиг (дефцонфиг_филе))
8. фпринтф (стдерр, "н *** Грешка при чувању дефцонфиг-а на:% с \ н \ н",
9. дефцонфиг_филе);
10. ретурн 1;
11.
12. елсе иф (инпут_моде != листневцонфиг && инпут_моде != хелпневцонфиг)
13. ако (!но_цонф_врите && цонф_врите (НУЛЛ))
14. фпринтф (стдерр, "\ н *** Грешка током писања конфигурације.\ н \ н ");
15. излаз (1);
16.
17.
18. / *
19. * Направите ауто.цонф ако не постоји.
20. * Ово спречава ГНУ Маке 4.1 или старији од емитовања
21. * "укључи / конфигурисање / аутоматски.цонф: Нема такве датотеке или директоријума "
22. * у Макефиле-у највишег нивоа
23. *
24. * синццонфиг увек креира или ажурира аутоматски.цонф јер је
25. * користи се током израде.
26. * /
27. иф (цонф_врите_аутоцонф (синц_кцонфиг) && синц_кцонфиг)
28. фпринтф (стдерр,
29. "\ н *** Грешка током синхронизације конфигурације.\ н \ н ");
30. ретурн 1;
31.
32.
33. ретурн 0;
34.

У систему Кцонфиг има пуно циљева. Неки од уобичајених укључују цонфиг и менуцонфиг.

Као што је поменуто, циљеве обрађују различити програми у системима домаћина, било да пружају ГУИ или командну линију. Кцонфиг алате можете пронаћи у / сцриптс / Кцонфиг у извору језгра.

хттпс: // еликсир.боотлин.цом / линук / најновије / извор / скрипте / кцонфиг

хттпс: // еликсир.боотлин.цом / линук / најновије / извор / скрипте / кцонфиг / Макефиле

Први поступак је обично читање датотеке Кцонфиг у основном директоријуму, која се користи за изградњу почетне конфигурационе базе података. Како се процес наставља, база података се ажурира приликом читања датотека следећим редоследом:

.цонфиг
/ либ / модулес / $ (љуска, унаме-р) /.цонфиг
/ етц / кернел-цонфиг
/ боот / цонфиг - $ (љуска, унаме-р)
АРЦХ_ДЕФЦОНФИГ
арцх / $ (АРЦХ) / дефцонфиг

.Датотека цонфиг се затим спушта на синццонфиг, која прихвата .конфигурациона датотека као улаз. Обрађује датотеку и избацује датотеке које се затим класификују у различите категорије као што су:

Кбуилд Филес

Готово све кернел датотеке су Кбуилд Макефилес који користе Кбуилд инфраструктуру, што је рекурзивна карактеристика израде. Рекурзивно стварање је начин коришћења алата Маке као наредбе у датотеци Маке. Рекурзија је веома корисна при састављању великог пројекта.

Кбуилд ради тако што се позива на све датотеке које смо поменули у горњем одељку.

Кбуилд систем гради своје компоненте користећи горњу датотеку Макефиле која укључује арх датотеке Макефиле са именом арцх / $ (АРЦХ) / Макефиле у датотекама конфигурације. Рекурзивно се спушта у поддиректоријуме који позивају Маке на компонентама користећи рутине у скриптама / Макефиле.*. Кбуилд се затим надовезује на суседни објекат и повезује их у објекте, стварајући вмлинук.

Да бисте сазнали више о синтакси која се користи у Кбуилд Макефилес, погледајте документацију.

Размотрите следећу скрипту.

хттпс: // гитхуб.цом / торвалдс / линук / блоб / мастер / сцриптс / линк-вмлинук.сх

О објектне датотеке које се користе за креирање вмлинук-а се прво компајлирају у одговарајуће уграђене датотеке .датотеке као вар КБУИЛД_ВМЛИНУКС_ИНИТ, МАИН, ЛИБС. Они су састављени у вмлинук-у.

хттпс: // гитхуб.цом / торвалдс / линук / блоб / мастер / сцриптс / Макефиле.градити

Закључак

У овом водичу смо погледали Кбуилд и Кцонфиг системе у систему градње језгра и како то функционише. Као што смо споменули на почетку уџбеника, теме о којима се расправља су широке и не могу се покрити ни у једном уџбенику.

Инсталирајте најновију ОпенРА Стратеги Гаме на Убунту Линук
ОпенРА је Либре / Фрее Реал Тиме стратешки механизам који ствара ране Вествоод игре попут класичне Цомманд & Цонкуер: Ред Алерт. Дистрибуирани модови ...
Инсталирајте најновији Долпхин Емулатор за Гамецубе & Вии на Линук
Долпхин Емулатор вам омогућава да играте изабране игре Гамецубе и Вии на Линук Персонал Цомпутерс (ПЦ). Долпхин Емулатор је слободно доступан и емула...
Како се користи ГамеЦонкуерор Цхеат Енгине у Линуку
Чланак покрива водич о коришћењу ГамеЦонкуерор варалице у Линуку. Многи корисници који играју игре на Виндовс-у често користе апликацију „Цхеат Енгине...