[Gelöst] Makefile erklärung!!!

Programmieren in C++
Antworten
Autor
Nachricht
Benutzeravatar
LecramOS
6 Bit
Beiträge: 121
Registriert: Sa Feb 20, 2010 21:45
Wohnort: Pandora.

[Gelöst] Makefile erklärung!!!

#1 Beitrag von LecramOS » So Feb 21, 2010 19:47

Hallo baldige Pandorianer und die anderen ^_^

So langsam versteh ich auch mit anderen Bibliotheken in einen C programm umzugehen, jedoch nur auf Dev-C++.
Ich weiß also, wie ich andere Bibliotheken über Dev-C++ mit einbeziehe und kann diese dann gut compilieren und
für mein Programm nutzen. Klappt wunderbar solange es sich um Programmierung auf PC handelt und nicht für ein anderes system wie in meinen Fall jetzt die PlaystationPortable mit CFW.

Bitte jetzt nicht geschockt sein und denken:,, :slap: Wie kann er es wagen hier im gp2x Forum über die PSP zu sprechen oder ähnliches.

Dadurch, dass ich die PSP nun als Versuchsobjekt nehme um schon mal einen einblick in das programmieren für andere Systeme bekomme (für Pandora), bin ich auch schon auf einige Sachen gestoßen, die ich nicht ganz verstehe und das ist unter anderem das "Makefile" .

Es ist nicht so, dass ich nicht schon ein HelloWorld auf der PSP zum starten gebracht hätte.
Ich hatte wie beschrieben Cygwin + psptoolchain + pspsdk installiert und ich konnte EBOOT.pbt dateien compilieren.

So tastete ich mich dann mithilfe von Tutorials immer ein stückchen weiter in C programmieren für die PSP bis ich zu dem ende der Tutorials kam, wo ich zu guter letzt Sound eingefügt sollte und ein bewegbares Bild.

Nun ist bei diesen ganzen PSP programmieren aber ein für mich großer unterschied zum mehr oder weniger bequemen Dev-C++ ,womit ich ja für PC programmiere, weil ich bei der PSP zum compilieren ja Cygwin benutzen muss/soll und da auf einmal dieses "Makefile" ist, womit ich in der PC programmierung noch nie zutun hatte. :huh:

Da ich denke, dass es ganz bestimmt nicht das letzte mal sein wird(ausser ich sterbe) , dass ich mit diesen "Makefile" zu tun habe stelle ich Euch nun die Frage und gleichzeitig bitte ob mir das nicht jemand mal erklären kann was die einzelnen Syntax in dieser Datei eigentlich bedeuten und wie man es zusammensetzt ???

Bitte möglichst gut beschreiben.
Dankööö.
Zuletzt geändert von LecramOS am Mo Mär 15, 2010 23:00, insgesamt 1-mal geändert.
Na und !!!

Benutzeravatar
zLouD
9 Bit
Beiträge: 529
Registriert: So Okt 12, 2008 18:03

Re: Makefile erklärung!!!

#2 Beitrag von zLouD » So Feb 21, 2010 20:06

Hey,

wenn du nah am Pandora System arbeiten möchtest dann setz dir doch ein Linux auf in einer VirtualBox oder natürlich besser noch direkt auf deiner Maschine.

(Es heißt EBOOT.PBP, nicht PBT :> )

Zur eigentlichen Frage:
Ein Makefile ist für das Programm "make" gedacht, welches die "Makefile" abarbeitet und dir das Programm mit Hilfe anderer Programme wie z.B. gcc kompiliert bzw. installiert.

Ich glaube ich habe es so kompakt und verständlich erklärt.

Frag einfach falls du es nicht ganz verstanden hast, bzw. noch fragen hast :)

Liebe Grüße
Sei du selbst die Veränderung, die du dir wünschst für diese Welt.
Mohandas Karamchand Gandhi
--
Bild
zLouD.

Benutzeravatar
LecramOS
6 Bit
Beiträge: 121
Registriert: Sa Feb 20, 2010 21:45
Wohnort: Pandora.

Re: Makefile erklärung!!!

#3 Beitrag von LecramOS » So Feb 21, 2010 20:19

:O ÄÄää ... Ja ... ... Kompakt war es.
Verständlich ... rein oberflächlich gesehen auch.

Doch ich wollte mehr vom Detail :yes:

EDIT: Habe hier eine gute erklärung. http://www.asurowiki.de/pmwiki/pmwiki.p ... efileHowto

Was ist der unterschied wenn ich mit Linux(b.s.p ubuntu) compiliere oder auf Windows ???
Editor ist Editor oder ?

Habe über eine virtuelle Maschine Ubuntu installiert und läuft auch, aber was soll mir das denn jetzt für Vorteile bieten ?

-- So Feb 21, 2010 21:41 --

:dash: Blödes Makefile. Muss das so kompliziert sein ? :dash:

-- So Feb 21, 2010 21:42 --

:dash: Blödes Makefile. Muss das so kompliziert sein ? :dash:
Na und !!!

Benutzeravatar
zLouD
9 Bit
Beiträge: 529
Registriert: So Okt 12, 2008 18:03

Re: Makefile erklärung!!!

#4 Beitrag von zLouD » So Feb 21, 2010 20:46

LecramOS hat geschrieben: Doch ich wollte mehr vom Detail :yes:
Dann solltest du auch im Detail fragen.
LecramOS hat geschrieben: Was ist der unterschied wenn ich mit Linux(b.s.p ubuntu) compiliere oder auf Windows ???
Direkt gibt es keinen Unterschied auf welcher Plattform du kompilierst, es geht viel mehr darum für Was du kompilierst, denn wie du selbst gemerkt hast kann man auch auf einem Windows System für das PSP System kompilieren.
LecramOS hat geschrieben: Habe über eine virtuelle Maschine Ubuntu installiert und läuft auch, aber was soll mir das denn jetzt für Vorteile bieten ?
Was bei dir in der Virtuellen Maschine läuft, kann solange es gut programmiert wurde, auch auf dem Pandora laufen.
Schließlich läuft auf dem Pandora Angstrom Linux, welches ja auch ein Linux ist. Das heißt, mit Ubuntu in diesem Fall hast du die meisten Librarys bereits oder kannst diese leicht nachinstallieren.

Falls du mehr zu Makefile wissen möchtest, lies hier nach.

Falls du mehr Fragen zu dem Thema hast, kannst du natürlich auch mal im IRC-Channel vorbeischauen, dort geht das erklären auch schneller.

Liebe Grüße
Sei du selbst die Veränderung, die du dir wünschst für diese Welt.
Mohandas Karamchand Gandhi
--
Bild
zLouD.

Benutzeravatar
double7
10 Bit
Beiträge: 1056
Registriert: Sa Jan 21, 2006 19:14

Re: Makefile erklärung!!!

#5 Beitrag von double7 » So Feb 21, 2010 20:50

LecramOS hat geschrieben:Doch ich wollte mehr vom Detail :yes:
EDIT: Habe hier eine gute erklärung. http://www.asurowiki.de/pmwiki/pmwiki.p ... efileHowto
Für GNU make ist hier das Original:
http://www.gnu.org/software/make/make.html
dort findest Du ziemlich weit unten die makefile conventions:
http://www.gnu.org/software/make/manual/make.html
LecramOS hat geschrieben: Was ist der unterschied wenn ich mit Linux(b.s.p ubuntu) compiliere oder auf Windows ???
Editor ist Editor oder ?
Aber compiler muss nicht unbedingt compiler sein - und das makefile ist für den compiler. Wirklich mal gaanz einfach gesagt eine Art Batchdatei oder Steuerdatei was der Compiler wann mit welchen Dateien machen soll. Interessant und notwendig wird es erst, wenn Du in grosse Projekte einsteigst, die aus sehr vielen Einzeldateien bestehen.
LecramOS hat geschrieben:Habe über eine virtuelle Maschine Ubuntu installiert und läuft auch, aber was soll mir das denn jetzt für Vorteile bieten ?
Du könntest dort den gcc compiler mit vollen Docs, howtos und manuals installieren. Dann stünde Dir mit dem Befehl "apropos" eine Suchfunktion zu bestimmten Begriffen und den dazu verfügbaren Befehlen zur Verfügung.

Ich würde Dir zu diesen Grundlagen-Fragen jedoch empfehlen ein Forum zu suchen welches sich explizit mit Programmierung beschäftigt. Ich könnte mir denken, daß vieles FAQ sein wird. Jedenfalls viel Spaß beim lesen. ;)

Ups, zLoud war schneller. ;)
77 - double luck - :D
2008-Oct: 5th day Pandora preorder
2010-Nov: "it could be that most of you will have their unit just before christmas
2010-Dec: "I don't think we'll see too many shipped Pandoras before christmas
2012-May-04: 20:54 My pandora left the building
2012-May-07: 14:30 Finally. Yes. I'm speachless.

Benutzeravatar
LecramOS
6 Bit
Beiträge: 121
Registriert: Sa Feb 20, 2010 21:45
Wohnort: Pandora.

Re: Makefile erklärung!!!

#6 Beitrag von LecramOS » So Feb 21, 2010 20:56

Danke für die Hilfe und die einladung.
Zuletzt geändert von LecramOS am Mi Mär 17, 2010 09:07, insgesamt 1-mal geändert.
Na und !!!

Benutzeravatar
Cyrax
9 Bit
Beiträge: 584
Registriert: Mi Jul 22, 2009 15:10
Wohnort: Lübeck

Re: Makefile erklärung!!!

#7 Beitrag von Cyrax » So Feb 21, 2010 21:03

Ich kann zwar kein C/C++ (hatte nach ersten Versuchen einfach kein Bock mehr, einmal eckige Klammer mit geschweifter vertauscht und schon lief nichts mehr und das dumme Programm wollte den Fehler auch nicht finden) aber ich würde einfach sagen dass bei Linux die Vorteile darin liegen dass man schon einige vielfältige Compiler gleich hat, GCC ist da ein gutes Beispiel, aber auch (unter anderem) Python ist im Vergleich zu Windows mit dabei. Bei Linux hast du also schon einiges an Compilern was man bei Windows nachinstallieren muss was auch mal schief gehen kann. Bei mir waren auch meine erste Schritte in Python mit Linux (Debian) viel leichter als mit Windows XP, auch weil bei Windows so gut wie gar nichts da war und alles nachinstalliert wurde.
Ob die PSP jetzt gute Vorbereitung auf Pandora ist bezweifle ich auch, ich habe einmal mit LUA extra wegen der PSP angefangen (war auch schon etwas weiter als mit C++), da die Pandora aber Angström als OS haben wird wäre das Verhalten eher wie bei einem Linux-PC (Angström hat ja auch GCC sodass man bei langer Weile sogar auf der Pandora selbst Programmieren könnte :unsure: )
EDIT: war wohl etwas zu langsam...

Benutzeravatar
LecramOS
6 Bit
Beiträge: 121
Registriert: Sa Feb 20, 2010 21:45
Wohnort: Pandora.

Re: Makefile erklärung!!!

#8 Beitrag von LecramOS » So Feb 21, 2010 21:10

OK ich finde mich mal damit ab, dass es für die Pandora "hoffentlich" leichter compilieren lässt als jetzt für die PSP und werde mich ab morgen auch wieder hauptsächlich auf PC programmierung konzentrieren und mir wirklich mal den Ratschlag zu herzen nehmen über die Virtuelle maschine auf Ubunt zu compilieren :-D . Aber müsste doch möglich sein, dass ich mithilfe des Makefiles die ALLEGRO bibliothek und das PSPSDK miteinander verbinde, also die einzelnen bibliotheksDaten die halt fürs compilieren notwendig sind meine ich. So müsste ich doch eigentlich mit ALLEGRO und dem PSPSDK zusammen für die PSP compilieren können oder ?? und mich nicht nur auf die vorgegebene PSPSDK beschränken oder ?? nur da wird es ja für mich kompliziert, weil ich das Makefile ja irgendwie anpassen muss. :-???

-- Mi Mär 17, 2010 10:13 --

Hier hat Evil Azrael das "einfache" Makefile ganz gut erklärt, doch war es in einem anderen Thread.
Deshalb poste ich seine Erklärung noch mal hier, damit Leute die nach Makefile Erklärung suchen
auch hier eine Antwort finden.

Zitat von Evil Azrael


Also.. zum einen haben Makefiles nix mit C++ zu tun. Mit Makefiles kann man alles machen, so kochen oder Wäsche.
Und einfache sind nicht schwer, sondern bestehen immer aus

Code: Alles auswählen

Ziel: Voraussetzungen
    Befehl1
    Befehl2
    usw
Die Befehle werden durch ein Tab eingerückt. Am ende der Befehlskette sollte das Ziel erstellt sein.
Beispielsweise

Code: Alles auswählen

funktion.o: funktion.h funktion.cpp global_vars.h
  g++ funktion.cpp -c -o funktion.o
Die erste Zeile sagt, um funktion.o zu erstellen braucht man funktion.h funktion.cpp und global_vars.h. Diese müssen nicht erstellt werden, aber falls eine von denen neuer ist als die funktion.o, dann erstelle funktion.o bitte neu. Das -c sagt dem Compiler "führe den linker schritt nicht aus, sondern erstelle ein kompiliertes object-file.

das gleiche machen wir nochmal für die main (beispielhaft)

Code: Alles auswählen

main.o: main.cpp funktion.h global_vars.h
   g++ main.cpp -c -o main.o
Und am Ende linken wir alles zusammen:

Code: Alles auswählen

test.exe: main.o funktion.o
    g++ main.o funktion.o -o test.exe

Und zusammen Makefile:

Code: Alles auswählen

funktion.o: funktion.h funktion.cpp global_vars.h
  g++ funktion.cpp -c -o funktion.o

main.o: main.cpp funktion.h global_vars.h
   g++ main.cpp -c -o main.o

test.exe: main.o funktion.o
    g++ main.o funktion.o -o test.exe
make test.exe
sollte dann die exe einschliesslich (geänderter) Voraussetzungen erstellen.

Kompliziert, oder? Das Einfügen der global_var.cpp ist dem interessierten Schüler zur Übung überlassen.

_________________
War, War never changes... The end of the world occurred pretty much as we had predicted. Too many humans, not enough space or resources to go around. The details are trivial and pointless, the reasons, as always, purely human ones. A great cleansing, an atomic spark struck by human hands, quickly raged out of control, spears of nuclear fire rained from the skies, continents were swallowed in flames and fell beneath the boiling oceans....

http://www.evilazrael.de
Na und !!!

Antworten

Zurück zu „C++“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast