Warum wird 'bc' benötigt, um den Linux-Kernel zu erstellen?

66

Die Mindestanforderungenbc für die Erstellung des Linux-Kernels geben an, dass der Taschenrechner für die Erstellung des Kernels v4.10 erforderlich ist, wobei die Mindestversion des Tools vorliegt 1.06.95.

Was wird bcin diesem Zusammenhang verwendet und warum wird die C-Sprache nicht direkt anstelle bcdieser Operationen verwendet?

Ikaros
quelle
10
Was meinst du mit C direkt ? Ich denke nicht, dass die Verwendung von C als "Skriptsprache" während des Builds direkt oder praktisch ist.
Cubuspl42
4
@ cubuspl42 Sie könnten einfach die Operationen in die Quelle schreiben und vom Compiler in Konstanten umwandeln lassen. In Wirklichkeit ist es dafür etwas zu kompliziert.
OrangeDog

Antworten:

83

bcwird während der Kernel-Erstellung verwendet, um Zeitkonstanten in Header-Dateien zu generieren. Sie können sehen , es aufgerufen inKbuild , wo es verarbeitet kernel/time/timeconst.bczu erzeugen timeconst.h.

Dies könnte als C-Programm implementiert werden, das während des Builds erstellt und ausgeführt wird. Es ist jedoch einfacher zu verwenden bc(was klein und üblich ist; es ist Teil der Tools, die auf POSIX-Systemen obligatorisch sind - das erwartet der Kernel GNU bcobwohl).

bcwird hier anstelle von Perl verwendet . Die Commit-Nachricht weist darauf hin, dass bcsie zuvor verwendet wurde, aber ich kann keine Spur davon finden. Perl wird seit 2008 verwendet (sehr zum Leidwesen einiger Leute , obwohl dieses Patch-Set nie zusammengeführt wurde).

Stephen Kitt
quelle