Ao tentar instalar o som_pak-3.1-NAcMoS.tar.gz
arquivo, usei os comandos abaixo:
$ 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
Mas, ao executar o make
comando, estou recebendo o seguinte erro:
* separador ausente (você quis dizer TAB em vez de 8 espaços?). Pare.
- Alguém pode me dizer o motivo do erro?
- Existe algum pacote necessário para incluir isso?
Respostas:
O erro que você está encontrando:
Significa que o
makefile
contém espaços em vez de tabulações. Omake
utilitário é notoriamente exigente quanto ao uso de, em Spacevez de Tab. Portanto, é provável quemakefile
contenha Spaceno início das sub-rotinas da regra no arquivo.Exemplo
Digamos que tenho os seguintes 3
hello.c world.c main.c :.c
arquivos:Digamos que tenho o seguinte
Makefile
:Agora tentamos construir um alvo
Quando eu corro contra o alvo
helloworld
:Parece familiar?
Corrigindo o problema
Você pode corrigir isso alterando os caracteres Spacespara reais Tab. Eu costumava
vim
reparar meu arquivo. Basta abri-lo:E, em seguida, execute este comando dentro de:
NOTA:
^I
é um caractere especial. A digitação ^seguida por Iserá interpretada de forma diferente em comparação com Ctrl+ V- Ctrl+ I.Isso substituirá todas as linhas que começam com 1 ou mais Spacespor uma real Tab.
Agora, quando reexecuto meu
helloworld
alvo:Referências
fonte
Como a outra resposta sugeriu, os Makefiles precisam de caracteres de tabulação, não caracteres de espaço. Eu tenho o meu
.vimrc
conjunto para substituir automaticamente todas as guias por espaços, então eu tenho que definir manualmente a configuração reversa em Makefiles individuais. Ovim
comando que eu uso é o seguinte:fonte
# vim: set noet:
Nota: As maneiras corretas de lidar com esse problema específico são corrigir o Makefile para que cada linha de ação de cada receita seja recuada usando um único caractere de tabulação e, em seguida, envie um patch para os desenvolvedores originais.
Este é um truque feio, que funciona com versões recentes do GNU
make
(se o problema for que o Makefile usa espaços em vez de guias, de forma consistente):Isso definirá a
make
variável GNU especial.RECIPEPREFIX
para um único espaço. Essa variável, desde o GNUmake
3.82 ou mais (2007), controla o caractere usado para prefixar as linhas de ação das receitas. Se a variável estiver vazia (como por padrão), serão usadas guias.Exemplo,
Exemplo, mostrando seu uso com
>
(configurando a variável dentro do Makefile neste caso):Veja também:
make
manual GNU .fonte