Comment obtenir que `make` reconnaisse la commande d'alias

4

J'installe MOOG , et quand je make -f Makefile.maclapje reçois l'erreur:

$ make -f Makefile.maclap
g77 -w   -c -o Abfind.o Abfind.f
make: g77: No such file or directory
make: *** [Abfind.o] Error 1

Après des recherches en ligne, je pense que depuis que j'ai gcc-5, la commande g77 n’existe pas sur mon ordinateur.

J'ai donc utilisé, à partir d'une question d'échange de pile, alias g77=/usr/local/bin/gfortran-5pour essayer de compiler le code fortran avec gfortran.

Maintenant, quand je g77vois gfortran-5: fatal error: no input files compilation terminated, indiquant que cela g77fonctionne comme un compilé.

Mais quand je make -f Makefile.maclapreçois toujours l'erreur:

$ make -f Makefile.maclap
g77 -w   -c -o Abfind.o Abfind.f
make: g77: No such file or directory
make: *** [Abfind.o] Error 1

Comment puis-je obtenir la commande make qui utilise fortran-5 pour compiler les fichiers Abfind.o et Abfind.f?

Comment puis-je réussir les étapes makeet make installpour obtenir ce package logiciel en cours d'exécution?

jww
la source

Réponses:

1

Si vous ne voulez pas créer un lien symbolique comme l'a suggéré @Thomas, vous pouvez créer un alias directement dans le Makefile, en plaçant cette ligne quelque part vers le haut du Makefile:

G77 := /usr/local/bin/gfortran-5

et ensuite, quelque part dans votre cible, utilisez-la comme suit:

$(G77) -w -c -o Abfind.o Abfind.f
Mdszy
la source
Cette réponse laisse beaucoup à désirer. Si je crée l'alias pour résoudre le problème sur un hôte, qu'en est-il des autres hôtes qui n'ont pas le problème (et qui n'ont pas le compilateur à l'emplacement codé en dur)?
jww
Vous pouvez examiner les conditions de Makefile et changer la valeur de la variable G77 en fonction de ce qui existe / n'existe pas sur le système hôte.
mdszy
3

Le makeprogramme ne verra que les noms qui sont en fait des fichiers (ou des répertoires). Il ne sait rien des alias de shell.

Plutôt qu'un alias, si vous aviez g77dans votre $PATHlien symbolique, cela fonctionnerait. Dans de nombreux environnements, si vous avez un $HOME/binrépertoire, celui-ci est automatiquement ajouté à votre $PATH. (Sinon, il est simple de le faire manuellement, les détails dépendent de votre shell).

Si c'est le cas le plus simple:

cd
mkdir bin
cd bin
ln -s /usr/local/bin/gfortran-5 g77

Puis déconnectez-vous et reconnectez-vous (pour laisser les scripts d'initialisation du shell mettre à jour le chemin, etc.)

Thomas Dickey
la source