Probleme de script

[Fermé]
Signaler
Messages postés
4
Date d'inscription
lundi 18 août 2008
Statut
Membre
Dernière intervention
18 août 2008
-
Messages postés
4
Date d'inscription
lundi 18 août 2008
Statut
Membre
Dernière intervention
18 août 2008
-
Bonjour,

J'utilise un logiciel que je peux développer/modifier sur Mandriva, et je n'arrive pas a utiliser le script pour recompiler le fichier (ce n'est pas moi qui l'ai développé et j'avoue que je debute "un peu" sur linux).

#!/bin/bash

# Version O2
OPTIF = -O -g
OPTIC = -O -g
OPTIL = $(OPTIF) 

.SUFFIXES: .eso .for .f .c .o .a

.SILENT:

.IGNORE:

# Version de developpement personnel
DEVEL = ./Cast3m_devel

# fichiers objets surcharges

CAST = Lib_Castem/bdata.o main.o

# fichiers de developpements personnels
SOUDEV = $(wildcard ESODEV/*.eso)
SOUDEV1 = $(wildcard ESODEV/*.for)

# objets castem pour developpement
OBJDEV = $(SOUDEV:.eso=.o) $(SOUDEV1:.for=.o)

# librairies Castem, Gemat et standards
LIBCAS = Lib_Castem/castem.a
LIBGEM = Lib_Castem/esope.a

LIBBLAS = /home/david/d-blas/libblas.a

# END = /opt/langtools/lib/end.o

LIBSTD = /usr/X11R6/lib/libX11.so

default : 
	echo 'gmake -r '$(DEVEL)

$(DEVEL) : $(OBJDEV) $(CAST) $(LIBCAS) $(LIBGEM) $(LIBSTD) 
	echo ' edition de lien pour ' $@
	g77 $(OPTIL) -o $@ $(OBJDEV) $(CAST) $(LIBCAS) $(LIBGEM) $(LIBBLAS) $(LIBSTD) -lncurses -lpthread 2>&1   | grep -v 'multiple common' \
                                 | grep -v 'previous common is here'     \
                                 | grep -v 'overridden by definition' \
                                 | grep -v 'overridden by larger common' \
                                 | grep -v 'larger common is here' \
                                 | grep -v 'defined here' \
                                 | grep -v 'overriding common' \
                                 | grep -v 'overriding smaller common' \
                                 | grep -v 'common is here'
	echo ' edition de lien terminee'


.eso.o :;
	echo ' precompilation de ' $*.eso
	./e2f_new $*.eso
	echo ' compilation de ' $*.f
	g77 $(OPTIF) -c $*.f -o $*.o

.for.o :;
	echo ' compilation de ' $*.for
	cp $*.for $*.f
	g77 $(OPTIF) -c $*.f -o $*.o

.f.o :;
	echo ' compilation de ' $*.f
	g77 $(OPTIF) -c $*.f -o $*.o

.c.o :;
	echo ' compilation de ' $*.c
	gcc $(OPTIC) -c $*.c -o $*.o


Que je lance en bash ou en sh, le même message d'erreur apparaît pour quasiment chacune des lignes : "./Makefile: line 4: OPTIF: command not found"... Du coup bien sur ca ne marche pas ;)

J'ai l'impression que mon interpreteur est mal reconnu, ou alors c'est plus subtil que ca et j'n'ai rien compris (problème de syntaxe du fichier ?)...

Si l'un de vous a du temps pour me filer un petit coup de pouce ce serait sympa !

Merci d'avance,
Ewen

4 réponses

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 887
Salut,

Supprime tous les espaces dans tes variables avant et après le signe "égale", et entoure les déclarations par des quotes (simples ou doubles) :
# Version O2
OPTIF="-O -g"
OPTIC="-O -g"
OPTIL="$(OPTIF)"
;-))
Messages postés
4
Date d'inscription
lundi 18 août 2008
Statut
Membre
Dernière intervention
18 août 2008

Ca j'avais plus ou moins tenté et vu que ca passait, mais je n'étais pas très sur de moi...

Du coup l'erreur se décale à "./Makefile: line 8: .SUFFIXES:: command not found"

...

Merci pour ta réponse rapide !
Messages postés
4
Date d'inscription
lundi 18 août 2008
Statut
Membre
Dernière intervention
18 août 2008

J'ai modifié le début du fichier comme suit :

#!/bin/bash

# Version O2
OPTIF='-O -g'
OPTIC='-O -g'
OPTIL=$OPTIF 

SUFFIXES='.eso .for .f .c .o .a'

# Version de developpement personnel
DEVEL=./Cast3m_devel

# fichiers objets surcharges

CAST='Lib_Castem/bdata.o main.o'

# fichiers de developpements personnels
SOUDEV=$(wildcard ESODEV/*.eso)


Ca passe au début, mais le wildcard n'est pas reconnu : "./Makefile: line 18: wildcard: command not found"
Messages postés
18302
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
23 octobre 2021
5 411
ce n'est pas un script mais un makefile, non ?
enlever la ligne /bin/bash et faire make -f fichier
Messages postés
4
Date d'inscription
lundi 18 août 2008
Statut
Membre
Dernière intervention
18 août 2008

Je crois qu'il y a de l'idée dans ce que tu as dis... Dumoins ca change tout au niveau des message d'erreur !
Ca résoud pas le problème mais ca le fait bien avancer ^^

Merci !!