En essayant d'installer le som_pak-3.1-NAcMoS.tar.gz
fichier, j'ai utilisé les commandes ci-dessous:
$ 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
Mais lors de l'exécution de la make
commande, j'obtiens l'erreur suivante:
* séparateur manquant (vouliez-vous dire TAB au lieu de 8 espaces?). Arrêtez.
- Quelqu'un peut-il me dire la raison de l'erreur?
- Y a-t-il des packages à inclure avec cela?
Réponses:
L'erreur que vous rencontrez:
Signifie que le
makefile
contient des espaces au lieu de Tab. L'make
utilitaire est notoirement difficile à utiliser Spaceau lieu de Tab. Il est donc probable que lemakefile
contient Spaceau début des strophes de règles dans le fichier.Exemple
Disons que j'ai les 3
Bonjour c world.c main.c :.c
fichiers suivants:Dites que j'ai ce qui suit
Makefile
:Maintenant, nous essayons de construire une cible
Quand je l'exécute contre la cible
helloworld
:Semble familier?
Résoudre le problème
Vous pouvez résoudre ce problème en modifiant les caractères Spacesréels Tab. J'avais l'habitude
vim
de réparer mon dossier. Ouvrez-le simplement:Et puis exécutez cette commande dans:
REMARQUE:
^I
est un caractère spécial. La frappe ^suivie de Isera interprétée différemment de Ctrl+ V- Ctrl+ I.Cela remplacera toutes les lignes commençant par 1 ou plus Spacespar un réel Tab.
Maintenant, quand je réexécute ma
helloworld
cible:Références
la source
Comme l'autre réponse l'a suggéré, les Makefiles ont besoin de caractères de tabulation, pas d'espaces. J'ai mon
.vimrc
jeu pour remplacer automatiquement tous les onglets par des espaces, je dois donc définir manuellement le paramètre inverse dans les Makefiles individuels. Lavim
commande que j'utilise est la suivante:la source
# vim: set noet:
Remarque: La bonne façon de résoudre ce problème particulier consiste à corriger le Makefile de sorte que chaque ligne d'action de chaque recette soit mise en retrait à l'aide d'un caractère de tabulation unique, puis à soumettre un correctif pour cela aux développeurs d'origine.
Il s'agit d'un vilain hack, qui fonctionne avec les versions récentes de GNU
make
(si le problème est que le Makefile utilise des espaces plutôt que des tabulations, de manière cohérente):Cela définira le GNU spécial
make
variable.RECIPEPREFIX
sur un seul espace. Cette variable, depuis GNUmake
3.82 ou plus (2007), contrôle le caractère utilisé pour préfixer les lignes d'action des recettes. Si la variable est vide (comme c'est par défaut), des tabulations sont utilisées.Exemple,
Exemple, montrant son utilisation avec
>
(en définissant la variable à l'intérieur du Makefile dans ce cas):Voir également:
make
manuel GNU .la source