Dlaczego „bc” jest wymagany do zbudowania jądra Linux?

66

Minimalne wymagania dotyczące budowy jądra Linux określają, że bcdo zbudowania jądra v4.10 wymagany jest kalkulator , przy czym minimalną wersją tego narzędzia jest 1.06.95.

Jaki jest użytek bcw tym kontekście i dlaczego język C nie jest używany bezpośrednio zamiast bcdo tych operacji?

Ikaros
źródło
10
Co masz na myśli, używając bezpośrednio C ? Nie sądzę, aby używanie C jako „języka skryptowego” podczas kompilacji było bezpośrednie lub przydatne.
cubuspl42
4
@ cubuspl42 możesz po prostu zapisać operacje w źródle i pozwolić kompilatorowi przeliczyć je na stałe. W rzeczywistości to, co jest używane, jest nieco zbyt skomplikowane.
OrangeDog

Odpowiedzi:

83

bcjest używany podczas kompilacji jądra do generowania stałych czasowych w plikach nagłówkowych. Widać to powoływać sięKbuild , gdzie przetwarza kernel/time/timeconst.bcsię wygenerować timeconst.h.

To mógłby być realizowany jako program C, który jest zbudowany i zarządzany w trakcie budowy, ale jest łatwiejszy w obsłudze bc(który jest mały i powszechne, w rzeczywistości jest częścią zestawu narzędzi, które są obowiązkowe dla nowych systemów POSIX - jądro nie spodziewa GNU bc).

bcjest używany tutaj zamiast Perla . Komunikat zatwierdzenia sugeruje, że bcbył wcześniej używany, ale nie mogę znaleźć śladu; Perl jest używany od 2008 roku (ku niezadowoleniu niektórych osób , chociaż ten zestaw łatek nigdy nie został scalony).

Stephen Kitt
źródło