Почему 'bc' требуется для сборки ядра Linux?

66

Минимальные требованияbc к сборке ядра Linux указывают, что калькулятор необходим для сборки ядра v4.10, минимальной версии инструмента 1.06.95.

Что используется bcв этом контексте, и почему язык C не используется непосредственно вместо bcэтих операций?

Икарос
источник
10
Что вы имеете в виду, используя C напрямую ? Я не думаю, что использование C в качестве «языка сценариев» во время сборки является прямым или удобным.
cubuspl42
4
@ cubuspl42 вы можете просто написать операции в исходном коде и позволить компилятору вычислить его в константы. В действительности то, для чего это используется, слишком сложно для этого.
Стоп Harm Моника

Ответы:

83

bcиспользуется во время сборки ядра для генерации постоянных времени в заголовочных файлах. Вы можете видеть , что вызывается вKbuild , где он обрабатывает kernel/time/timeconst.bcгенерировать timeconst.h.

Это может быть реализовано как программа на C, которая собирается и запускается во время сборки, но ее проще использовать bc(которая является небольшой и распространенной; фактически она является частью набора инструментов, которые являются обязательными для систем POSIX - ядро ​​ожидает GNU bcхотя).

bcиспользуется здесь вместо Perl . Сообщение фиксации предполагает, что оно bcиспользовалось ранее, но я не могу найти следа этого; Perl используется с 2008 годабольшому огорчению некоторых людей , хотя этот набор патчей никогда не был объединен).

Стивен Китт
источник