Как скомпилировать модули ядра Linux в каталогах, разделенных пробелами, в следующем make-файле?

Следующее должно работать в bash, если оно выполняется в интересующем вас каталоге.

for x in [0-9]*-file ; do mv $x `printf %03d-%s ${x%-*} ${x##*-}` ; done
6
10.06.2018, 18:51
1 ответ

No puedes. La sintaxis del archivo MAKE depende en gran medida de los espacios en blanco para separar palabras. Es difícil escribir archivos MAKE que funcionen correctamente cuando los nombres de los archivos contienen espacios, y los archivos MAKE del kernel de Linux, como la mayoría de los archivos MAKE, no lo intentan.

También es difícil hacer arreglos para citar correctamente los nombres de los archivos cuando se usan en un comando en un archivo MAKE, y la mayoría de los archivos MAKE tampoco lo intentan. Por lo tanto, evite todos los caracteres que son especiales para el shell :, no solo los espacios en blanco sino también !"#$&'()*;<=>?[]\`{|}.

Una solución en su caso sería usar un enlace simbólico cuya ruta no contenga ningún carácter especial. Creo que esto funciona con los archivos MAKE del kernel de Linux. No funciona en los archivos MAKE que utilizan la función make realpathde GNU, pero los archivos MAKE del kernel no la utilizan en las rutas a los controladores externos.

axor@vacuum:~/software/CS 8803/Operating System Concepts/Chapter 2/ch2$ ln -s "$PWD" /tmp/ch2
axor@vacuum:~/software/CS 8803/Operating System Concepts/Chapter 2/ch2$ cd !$
axor@vacuum:/tmp/ch2$ make
make -C /lib/modules/4.9.0-3-amd64/build M="/tmp/ch2" modules
…
9
27.01.2020, 20:24

Теги

Похожие вопросы