• Liebe User, bitte beachtet folgendes Thema: Was im Forum passiert, bleibt im Forum! Danke!
  • Hallo Gemeinde! Das Problem leidet zurzeit unter technischen Problemen. Wir sind da dran, aber das Zeitkontingent ist begrenzt. In der Zwischenzeit dürfte den meisten aufgefallen sein, dass das Erstellen von Posts funktioniert, auch wenn das Forum erstmal eine Fehlermeldung wirft. Um unseren Löschaufwand zu minimieren, bitten wir euch darum, nicht mehrmals auf 'Post Reply' zu klicken, da das zur Mehrfachposts führt. Grußworte.

[Linux] Problem mit make

Mitglied seit
07.08.2008
Beiträge
7
Reaktionen
0
Hi there.

Ich weiß zur Zeit net wo ich sonst posten soll, deshalb versuch ichs hier. Ich hoffe hier läuft zufällig jemand lang, der mir helfen kann. :)
Es geht um folgendes: Ich versuche eine Software unter Linux zum Laufen zu bekommen. make endet mit folgender Fehlermeldung:

make: *** Keine Regel vorhanden, um das Target »PYMET2S«,
benötigt von »pymets«, zu erstellen. Schluss.

Nach längerer Google Recherche habe ich bemerkt, dass dies eigentlich ne recht übliche Fehlermeldung von make ist. Folgende Dinge habe ich bereits probiert:

- Automake installiert (fail)
- make als Root aufrufen (su / sudo) (fail)
- Kernel-Source und -Header installiert (fail)

Auch habe ich versucht die makefile Datei selbst nach entsprechenden Fehlerquellen zu durchsuchen. Leider bin ich noch ein ziemlicher Noob was diese Dinge angeht, deshalb sehe ich da noch nix.
Die Software is leider was ziemlich spezielles, ein Programm zur Parameterschätzung in Fortran (PARFIT), deshalb erübrigt sich Software-spezifische Google-Suche.

Specs:
openSUSE 11.0 (retail)
make, Automake, Kernel installiert
FC: Intel Fortran Compiler

Ich hoffe mir kann jemand helfen. Falls jemand eine Idee hat, könnt ihr mir auch sehr gerne im ICQ schreiben 6026729. Vielen Dank im voraus... bis dann.

Bye Priest
 

ROOT

Technik/Software Forum, Casino Port Zion
Mitglied seit
17.11.2002
Beiträge
7.052
Reaktionen
38
Ort
MS
Poste halt mal das Makefile.
 
Mitglied seit
07.08.2008
Beiträge
7
Reaktionen
0
Ok. Die Fehlermeldung ist gelöst. Hab in der makefile etwas rumgewerkelt, nun gehts. Allerdings bekomme ich nun neue Fehlermeldungen, die anscheinend nix mehr mit make sondern eher mit Fortran bzw meinem Compiler zu tun haben:

ifort -c -g -Wall traj.f
ifort: command line warning #10156: ignoring option '-W'; no argument required
backend signals

fortcom: Severe: **Internal compiler error: internal abort** Please report this error along with the circumstances in which it occurred in a Software Problem Report. Note: File and line given may not be explicit cause of this error.

ifort: error #10014: problem during multi-file optimization compilation (code 3)
make: [pymets] Fehler 3 (ignoriert)
backend signals

ifort ist der Compileraufruf für meinen Fortran-Compiler.

Und hier die makefile:
# Makefile for PARFITS
# version including handling of implicit switches

MAKE = make
FC = ifort

TRAJEC = traj.o
BLASM = ./parfits/blasm/blas.o \
./parfits/blasm/mutil.o \
./parfits/blasm/dgesvd1.o

INTEGR1 = ./parfits/integr/metanb.o
# INTEGR2 = ./parfits/integr/difsys.o (not available)

PARFITS = ./parfits/parfits.o \
./parfits/monitn.o \
./parfits/initju.o \
./parfits/hcut.o \
./parfits/inscal.o \
./parfits/rankr.o \
./parfits/evalc.o \
./parfits/ssai.o \
./parfits/chscal.o \
./parfits/calcom.o \
./parfits/ind.o \
./parfits/intj.o \
./parfits/idcon.o \
./parfits/qdiff.o \
./parfits/hdiff.o \
./parfits/update.o \
./parfits/fd.o \
./parfits/yallfunc.o \
./parfits/upmult.o \
./parfits/exit.o

INCREM = ./parfits/increm/increm4.o \
./parfits/increm/inc4_l2.o \
./parfits/increm/inc4_l1.o \
./parfits/increm/dec4_l2.o \
./parfits/increm/sol_l2.o \
./parfits/increm/sol_l1.o \
./parfits/increm/dminv_l1.o \
./parfits/increm/crj.o

COV = ./parfits/cov/cov.o \
./parfits/cov/cov4.o \
./parfits/cov/covtot.o

PRINT = ./parfits/print/print.o \
./parfits/print/prtmain.o \
./parfits/print/prthead.o \
./parfits/print/prtit.o \
./parfits/print/prtmatrix.o \
./parfits/print/prtmatrixlp.o \
./parfits/print/prtmatrixhp.o \
./parfits/print/prtmatrixint.o


PYMETS = pymets.o
PYMET2S = pymet2s.o
CABBAGEL = cabbagel.o
CABBAGEQ = cabbageq.o
CABBAGELLL = cabbagelll.o
CABBAGEQQQ = cabbageqqq.o


PYMETDS = $(PYMETS) $(PARFITS) $(INCREM) $(COV) $(INTEGR1) $(BLASM) $(PRINT) $(TRAJEC)
PYMET2DS = $(PYMET2S) $(PARFITS) $(INCREM) $(COV) $(INTEGR1) $(BLASM) $(PRINT) $(TRAJEC)
CABBAGDL = $(CABBAGEL) $(PARFITS) $(INCREM) $(COV) $(INTEGR1) $(BLASM) $(PRINT) $(TRAJEC)
CABBAGDQ = $(CABBAGEQ) $(PARFITS) $(INCREM) $(COV) $(INTEGR1) $(BLASM) $(PRINT) $(TRAJEC)
CABBAGDLLL = $(CABBAGELLL) $(PARFITS) $(INCREM) $(COV) $(INTEGR1) $(BLASM) $(PRINT) $(TRAJEC)
CABBAGDQQQ = $(CABBAGEQQQ) $(PARFITS) $(INCREM) $(COV) $(INTEGR1) $(BLASM) $(PRINT) $(TRAJEC)

FFLAGS = -c -g -Wall
CCFLAGS = -c -g -Wall
#LDFLAGS = -Wall

all: pymets pymet2s \
cabbagel cabbageq \
cabbagelll cabbageqqq \

pymets: lkmaxdim mkparfits $(PYMETDS)
-@$(FC) $(PYMETDS) $(LDFLAGS) -o $@

pymet2s: lkmaxdim mkparfits $(PYMET2DS)
-@$(FC) $(PYMET2DS) $(LDFLAGS) -o $@

cabbagel: lkmaxdim mkparfits $(CABBAGDL)
-@$(FC) $(CABBAGDL) $(LDFLAGS) -o $@

cabbageq: lkmaxdim mkparfits $(CABBAGDQ)
-@$(FC) $(CABBAGDQ) $(LDFLAGS) -o $@

cabbagelll: lkmaxdim mkparfits $(CABBAGDLLL)
-@$(FC) $(CABBAGDLLL) $(LDFLAGS) -o $@

cabbageqqq: lkmaxdim mkparfits $(CABBAGDQQQ)
-@$(FC) $(CABBAGDQQQ) $(LDFLAGS) -o $@


mkparfits:
-@cd parfits;$(MAKE) parfit

lkmaxdim:
-@echo "Link auf maxdim wird gesetzt."
-@rm maxdim.f -f
ln -s ./parfits/maxdim.f maxdim.f

clean:
$(MAKE) clean -C ./parfits
rm maxdim.f -f
rm *.o -f
rm fort.* -f
rm pymets.f -f
rm pymet2s.f -f
rm cabbagel.f -f
rm cabbageq.f -f
rm cabbagelll.f -f
rm cabbageqqq.f -f
rm traj.f -f
rm pymets -f
rm pymet2s -f
rm cabbagel -f
rm cabbageq -f
rm cabbagelll -f
rm cabbageqqq -f


# Following lines provide automatic invocation of the
# C preprocessor cpp for FORTRAN files with suffix .F
# (Default on most UNIX platforms, but not on IBM's)

# define preprocessor
CPP = /lib/cpp

# compiler option for preprocessor
CPFLAGS = -P

.SUFFIXES: .F

.F.o:
-@$(CPP) $(CPFLAGS) $< $*.f
$(FC) $(FFLAGS) $*.f
-@rm -f $*.f
.f.o:
-@$(FC) $(FFLAGS) $*.f
.c.o:
$(CC) $(CCFLAGS) $*.c

TIA. :)
Priest
 
Mitglied seit
15.05.2003
Beiträge
11.307
Reaktionen
8
Ort
Fortuna 1895 Düsseldorf
wie wärs mit paketmanager? es gibt eigentlich nicht wirklich einen grund irgendwelche softwarepakete mit per hand zu installieren ( es sei denn es ist was wirklich ganz spezielles )

also fortran compiler gibts auf jedenfall auch über yast:




f2c │A Fortran-77 to C Translator │0.11 │ │ 1│
│┌────────────────────────────────────────────────┐││ │f2c-32bit │A Fortran-77 to C Translator │0.11 │ │ 328│
││ │││ │gcc-fortran │The system GNU Fortran Compiler │4.3 │ │ │
││ │││ │gcc-fortran-32bit │The system GNU Fortran Compiler │4.3 │ │ 1│
││ │││ │gcc43-fortran │The GNU Fortran Compiler and Support Files│4.3.1_20080507│ │ 10│
││ │││ │gcc43-fortran-32bit│The GNU Fortran Compiler and Support Files│4.3.1_20080507│ │ 1│
││ │││ │libgfortran43 │The GNU Fortran Compiler Runtime Library │4.3.1_20080507│ │ 919│
││ │││ │libgfortran43-32bit│The GNU Fortran Compiler Runtime Library │4.3.1_20080507│ │ 748│
 
Mitglied seit
07.08.2008
Beiträge
7
Reaktionen
0
Problem gelöst. Habe den g77 compiler installiert, mit dem ging es ohne Probleme. Schätze die makefile ist irgendwie speziell auf den g77 ausgelegt bzw. paar Dinge sind mit dem Intel compiler einfach nich kompatibel. Naja, wieder was gelernt.

Trotzdem danke für die Antworten :)
 
Mitglied seit
09.11.2002
Beiträge
880
Reaktionen
0
Leider muß ich bestätigen, das Fortran nicht gleich Fortran ist. Ich selber verwende ein Programm, welches sich mit dem PortlandGroup Fortran Compiler und dem Intel Compiler kompilieren läßt, nicht jedoch mit g77, gfortran-42 oder f77 (weiß grade nicht was das für einer ist).

Ich weiß nicht wie wichtig das für Dich ist, aber der ifort-code ist wahnsinning schnell, gleich gefolgt vom pgf. Die OpenScource g77 und gfortran-42 Programme benötigen mehr als doppelt so lang.
 
Oben