Al intentar instalar el som_pak-3.1-NAcMoS.tar.gz
archivo, he usado los siguientes comandos:
$ tar xvf som_pak-3.1-NAcMoS.tar.gz
$ cd som_pak-3.1
$ cp makefile.unix makefile
$ make
$ cd ..
$ ln -s som_pak-3.1 $NACMOS_HOME/som_pak
Pero al ejecutar el make
comando obtengo el siguiente error:
* Falta el separador (¿quiso decir TAB en lugar de 8 espacios?). Detener.
- ¿Alguien puede decirme la razón del error?
- ¿Hay algún paquete que deba incluir con esto?
Respuestas:
El error que estás encontrando:
Significa que
makefile
contiene espacios en lugar de Tab. Lamake
utilidad es notablemente exigente con el uso de en Spacelugar de Tab. Por lo tanto, es probable quemakefile
contenga Spaceal principio de las estrofas de reglas dentro del archivo.Ejemplo
Digamos que tengo los siguientes 3
Hola C world.c main.c :.c
archivos:Digamos que tengo lo siguiente
Makefile
:Ahora intentamos construir un objetivo
Cuando lo ejecuto contra el objetivo
helloworld
:¿Parecer familiar?
Solucionando el problema
Puede solucionar esto cambiando los caracteres Spacesreales Tab. Solía
vim
reparar mi archivo. Simplemente ábralo:Y luego ejecuta este comando dentro de:
NOTA:
^I
es un personaje especial. La escritura ^seguida por Ise interpretará de manera diferente en comparación con Ctrl+ V- Ctrl+ I.Esto sustituirá todas las líneas que comienzan con 1 o más Spacescon un real Tab.
Ahora cuando vuelvo a ejecutar mi
helloworld
objetivo:Referencias
fuente
Como sugirió la otra respuesta, los Makefiles necesitan caracteres de tabulación, no espacios. Tengo mi
.vimrc
conjunto para reemplazar automáticamente todas las pestañas con espacios, así que tengo que configurar manualmente la configuración inversa en Makefiles individuales. Elvim
comando que uso es el siguiente:fuente
# vim: set noet:
Nota: Las formas correctas de lidiar con este problema en particular es corregir el Makefile para que cada línea de acción de cada receta se sangra con un solo carácter de tabulación, y luego enviar un parche para los desarrolladores originales.
Este es un truco feo, que funciona con versiones recientes de GNU
make
(si el problema es que el Makefile usa espacios en lugar de pestañas, de manera consistente):Esto establecerá la
make
variable especial GNU.RECIPEPREFIX
en un solo espacio. Esta variable, desde GNUmake
3.82 más o menos (2007), controla el carácter utilizado para prefijar las líneas de acción de las recetas. Si la variable está vacía (como lo está por defecto), se usan pestañas.Ejemplo,
Ejemplo, mostrando su uso con
>
(configurando la variable dentro del Makefile en este caso):Ver también:
make
manual de GNU .fuente