LINUX.ORG.RU

Почему в ядре линукс отсутствует config.h?

 , ,


0

1

Тот config.h, которые кушает команда make вместе с Makefile

«Почему он должен быть?» — возможно, спросите вы. Отвечаю: так я пришел к выводу из диаграммы к этой статье: https://en.wikipedia.org/wiki/Configure_script

А еще мне кажется, что этот момент можно отнести не только к ядру линукс, но и к куче других программ — это, в прицнипе, не особо важный момент. Просто в нем я впервые заметил отсутствие config.h



Последнее исправление: cetjs2 (всего исправлений: 3)

Потому что не каждый обязан использовать упоротую автотулзятину.

anonymous
()

Это специфично для autotools. В ядре по другому организовано. Ядро с autotools было бы ужасным.

rst
()
Ответ на: комментарий от letni

Это тот же самый. Но до команды надо make-файлы как-то сгенерировать. И тут уже есть разные способы. Autotools со скриптом configure только один из способов, пока ещё наиболее распространённый.

rst
()
Ответ на: комментарий от rst

Autotools со скриптом configure только один из способов, пока ещё наиболее распространённый

Некоторые дегенераты ещё придумали cmake.

awesomebuntu
()
Ответ на: комментарий от rst

Ясно, я думал что эти все команды являются чем-то вроде монолита и make «привязан» к Makefile и config.h, и без них не будет работать.

А каким способом генерируется Makefile для ядра линукс, например? Просто интересно что ещё есть.

letni
() автор топика
Ответ на: комментарий от letni

Make с автотулзятиной никак не связан. Мэйкфайлы можно генерить другим софтом или писать самому. Или make не использовать тоже, есть другие системы сборки.

anonymous
()
Ответ на: комментарий от anonymous

Оу, круто. Это просто, когда знаешь где искать, а я даже не подозревал о существоании такой документации)

letni
() автор топика
Ответ на: комментарий от letni

а я даже не подозревал о существоании такой документации

Ты ещё больше удивишься, узнав, что документация идёт в комплекте с исходным кодом?

r3lgar ★★★★★
()
Ответ на: комментарий от r3lgar

Ты так говоришь, как будто я дурачок какой-то — не смотрел исходники. Хотя в гентушных я не увидел такой документации.

Ну а по теме: да я удивлен, и не очень понимаю зачем документацию пихать в исходники, мне это кажется нелогичным, архаичным.

letni
() автор топика
Ответ на: комментарий от r3lgar

Можно нубский вопрос?
Правильно я понимаю, что при сборке ядра буковка «M» рядом с некоторыми опциями говорит о том, что этот модуль будет собран; но в то же время, если я уберу эту буковку, я также могу в любой момент отдельно скомпилировать и подключить этот модуль? Просто я думаю, может эта возможность не просто так дана, и если я отключу её, то не смогу потом подключить отдельно собранный модуль.

letni
() автор топика
Ответ на: комментарий от letni

Хотя в гентушных я не увидел такой документации.

% find /usr/src/ -iname "Documentation" -type d
/usr/src/linux-4.11.3-gentoo/drivers/staging/iio/Documentation
/usr/src/linux-4.11.3-gentoo/drivers/staging/most/Documentation
/usr/src/linux-4.11.3-gentoo/drivers/staging/unisys/Documentation
/usr/src/linux-4.11.3-gentoo/drivers/staging/greybus/Documentation
/usr/src/linux-4.11.3-gentoo/tools/perf/Documentation
/usr/src/linux-4.11.3-gentoo/tools/objtool/Documentation
/usr/src/linux-4.11.3-gentoo/tools/build/Documentation
/usr/src/linux-4.11.3-gentoo/Documentation

Эту документацию не затрагивает даже USE="-doc" и FEATURE="nodoc", так что ты или не смотрел, или что-то скрываешь.

Ну а по теме: да я удивлен, и не очень понимаю зачем документацию пихать в исходники, мне это кажется нелогичным, архаичным.

Это для того, чтобы держать документацию и код up-to-date. Плюс, данная документация удобна для всех, в том числе для пользователей.

Правильно я понимаю, что при сборке ядра буковка «M» рядом с некоторыми опциями говорит о том, что этот модуль будет собран; но в то же время, если я уберу эту буковку, я также могу в любой момент отдельно скомпилировать и подключить этот модуль? Просто я думаю, может эта возможность не просто так дана, и если я отключу её, то не смогу потом подключить отдельно собранный модуль.

От многого зависит. Видишь ли, опции в конфиге ядра зачастую включают не только саму возможность, но и возможности, от которой оно зависит (dependency graph). Потому скорее да, некоторые модули ты не сможешь подключить отдельно. Но в то же время, не вкомпиленный в блоб модуль ты сможешь выгрузить и загрузить на его место новый, если он совместим с текущим ядром.

r3lgar ★★★★★
()
Последнее исправление: r3lgar (всего исправлений: 1)

make ничего не кушает, кроме Makefile, который ему подсунули

Это частный случай, когда при сборке используется config.h

Более того, в случае autotools config.h тоже необязательно применять

Harald ★★★★★
()
Ответ на: комментарий от letni

make «привязан» к Makefile и config.h

make просто выполняет то, что написано в Makefile. make будет работать даже если исходники состоят из всего 2-х файлов: prog.c и Makefile.

saahriktu ★★★★★
()

make нужен только Makefile. configure его генерирует. Это часть autotools. Некоторые считают такой подход неправильным, переусложнённым, предлагая отказаться от этих монструозных скриптов использовать обычные мейкфайлы. Не скажу, что это 100% верно для всех случаев, но здравое зерно в этом есть.

Psych218 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.