kdevelop - problem beim kompilieren

Software besorgen und anwenden
Antworten
Nachricht
Autor
voice
Beiträge: 2
Registriert: 15. Feb 2006 12:24

kdevelop - problem beim kompilieren

#1 Beitrag von voice » 15. Feb 2006 14:05

hi leute...

bin gerade dabei eine sehr alte eigen-software unserer firma mit kdevelop wieder ins leben zurückzuholen. die software dient zur berechnung hydraulischer modelle und soll in zukunft basierend auf der alten grundlage weiterentwickelt werden... jetzt habe ich aber ein problem... beim kompilieren der einzelnen files bekomme ich keine fehlermeldung... versuche ich das ganze paket zu erstellen meldet mir kdevelop folgendes...


cd '/home/pokg/prog_c++/hydra/debug' && WANT_AUTOCONF_2_5="1" WANT_AUTOMAKE_1_6="1" gmake -k -j1 -n
if test ! -f config.h; then rm -f stamp-h1; gmake stamp-h1; else :; fi
gmake all-recursive
set fnord $MAKEFLAGS; amf=$2; dot_seen=no; target=`echo all-recursive | sed s/-recursive//`; list='src'; for subdir in $list; do echo "Making $target in $subdir"; if test "$subdir" = "."; then dot_seen=yes; local_target="$target-am"; else local_target="$target"; fi; (cd $subdir && gmake $local_target) || case "$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; done; if test "$dot_seen" = "no"; then gmake "$target-am" || exit 1; fi; test -z "$fail"
Making all in src
gmake[2]: *** Keine Regel vorhanden, um das Target »hydra.c«,
benötigt von »hydra.o«, zu erstellen.
gmake[1]: *** [all-recursive] Fehler 1
if test ! -f config.h; then rm -f stamp-h1; gmake stamp-h1; else :; fi
gmake: *** [all] Fehler 2
*** Beendet mit Status: 2 ***

... kann mir vielleicht jemand helfen dieses problem zu lösen!

danke
alex

klopskuchen
prolinux-forum-admin
Beiträge: 1444
Registriert: 26. Jun 2004 21:18
Kontaktdaten:

#2 Beitrag von klopskuchen » 15. Feb 2006 19:47

gmake[2]: *** Keine Regel vorhanden, um das Target »hydra.c«,
benötigt von »hydra.o«, zu erstellen.
Eine dependency line eines Makefiles hat auszusehen:
target: object1 object2 ... object_n

Nach obiger Meldung sind Ziel und Abhängigkeit in betreffender Zeile vertauscht und make versucht aus einer Binärdatei (hydra.o) eine Sourcedatei (hydra.c) zu erstellen, was nicht klappt selbst wenn die betreffende Kommandoangabe richtig ist.

MfG, Klopskuchen
When all else fails, read the instructions .

voice
Beiträge: 2
Registriert: 15. Feb 2006 12:24

versteh ich nicht ganz...

#3 Beitrag von voice » 17. Feb 2006 10:36

hi,

tut mir leid, ich verstehe nicht ganz was du meinst... kenne mich mit "makefiles" nicht wirklich aus... deshalb verwende ich für meine programme immer eine entwicklungsumgebung die mir diese arbeit abnimmt...

vielleicht kannst du mir etwas mehr detailierte tipps geben...

danke!!!!

alex

klopskuchen
prolinux-forum-admin
Beiträge: 1444
Registriert: 26. Jun 2004 21:18
Kontaktdaten:

#4 Beitrag von klopskuchen » 17. Feb 2006 20:48

Sinn und Zweck von "make" ist es, bei Änderung an wenigen Dateien größerer Projekte, nicht alles neu kompilieren und linken zu müssen. Das "Makefile" enthält eine Beschreibung nach syntaktischen Regeln über die Abhängigkeiten aller Dateien, vom Source über Header bis zu Obkjektdateien.
Eine dieser syntaktischen Regeln ist die der "Abhängigkeitsbeschreibung" (dependency line). Um "make" mitzuteilen welche Dateien benötigt werden um eine bestimmte Binärdatei zu erstellen, muß die Abhängigkeitsbeschreibung in folgender Form im Makefile vorliegen:
Zieldatei : "hier eine Liste der benötigten Dateien zur Erstellung der Zieldatei, getrennt durch jeweils ein Leerzeichen"

Beispiel:
Endprodukt sollen sein zwei auszuführende Dateien, eine davon soll heißen "execute_logger". Diese ausführbare Datei wird erstellt aus main.c, logging.c, project_generic.h, zusätzlich wird mylog.o hinzugelinkt. Im Makefile sollte also stehen:
execute_logger : main.c logging.c project_generic.h mylog.o

In der von dir geposteten Fehlermeldung bezeichnet "make" die Datei hydra.c als Ziel und hydra.o als Abhängigkeit. Demzufolge steht im Makefile eine Zeile:
hydra.c : hydra.o
und "make" versucht nun aus der *.o eine *.c zu erstellen, was logischerweise nicht geht. Wahrscheinlicher wäre es eine Objektdatei als Kompilat einer Quellcodedatei zu erhalten. :)
hydra.o : hydra.c

MfG, Klopskuchen
When all else fails, read the instructions .

Benutzeravatar
Janka
Beiträge: 3585
Registriert: 11. Feb 2006 19:10

Re: versteh ich nicht ganz...

#5 Beitrag von Janka » 17. Feb 2006 21:31

voice hat geschrieben:hi,
tut mir leid, ich verstehe nicht ganz was du meinst... kenne mich mit "makefiles" nicht wirklich aus... deshalb verwende ich für meine programme immer eine entwicklungsumgebung die mir diese arbeit abnimmt...
Ein bisschen sollte man sich mit der Syntax von Makefiles schon auskennen, wenn man in C programmiert. Wenn man ein, zwei kleine Makefiles selbst gemacht hat, hat man den Dreh raus und muss nicht aus *diesem* Grund ein Trumm wie kdevelop benutzen. Zumal das auch bloß Makefiles erzeugt, aber ziemlich unübersichtliche - wenn dann was schief geht steht man hilflos da!

$ info make
oder Konqueror: ##make

und einfach mal ein wenig rumspielen.

Janka

Alex.MH

#6 Beitrag von Alex.MH » 18. Feb 2006 1:00

Hi,

die Makefiles von kdevelop sehen so grausam aus, weil automake verwendet wird. Du solltest daher die Makefiles nicht direkt editieren, da sie sonst beim naechsten configure wieder ueberschrieben werden.

Am besten du liest dir mal den Abschnitt "Using Automake" von diesem Tutorial durch: http://www.amath.washington.edu/~lf/tut ... l_toc.html

Falls du nur ein kleines Projekt hast, welches nicht gegen externe Libraries gelinkt werden muss, ist es meist besser selbst ein kleines Makefile zu schreiben. Eine Anleitung dafuer findest du ebenfalls im obigen Tutorial.

Gruss,
Alex

Antworten