¿Por qué se requiere 'bc' para construir el kernel de Linux?

66

Los requisitos mínimos de construcción del kernel de Linux especifican que bcse requiere la calculadora para construir el kernel v4.10, siendo la versión mínima de la herramienta 1.06.95.

¿Qué uso se hace bcen este contexto y por qué no se usa directamente el lenguaje C en lugar de bcpara estas operaciones?

Ikaros
fuente
10
¿Qué quieres decir con usar C directamente ? No creo que usar C como "lenguaje de script" durante la compilación sea directo o útil.
cubuspl42
44
@ cubuspl42 podría escribir las operaciones en la fuente y dejar que el compilador lo calcule en constantes. En realidad, para lo que se usa es demasiado complicado para eso.
Deja de dañar a Monica el

Respuestas:

83

bcse usa durante la compilación del núcleo para generar constantes de tiempo en los archivos de encabezado. Se puede ver que invoca enKbuild , donde se procesa kernel/time/timeconst.bcpara generar timeconst.h.

Esto podría implementarse como un programa en C que se construye y ejecuta durante la compilación, pero es más fácil de usar bc(que es pequeño y común; de hecho, es parte del conjunto de herramientas que son obligatorias en los sistemas POSIX; el núcleo sí espera GNU bcaunque).

bcse usa aquí en lugar de Perl . El mensaje de confirmación sugiere que bcse utilizó anteriormente, pero no puedo encontrar un rastro de eso; Perl se ha utilizado desde 2008 (para disgusto de algunas personas , aunque ese conjunto de parches nunca se fusionó).

Stephen Kitt
fuente