Seite 1 von 2

Projekte mit make erstellen

Verfasst: Mi Apr 22, 2020 2:20 pm
von Xeon
Hallo zusammen

Ich möchte ein Projekt mit make erstellen, leider habe ich damit Probleme:
https://www.proggen.org/doku.php?id=c:t ... build:make

Als welches Format muss ich die Datei Makefile abspeichern?
Welchen Inhalt muss die Datei make.bat haben?

Danke im Voraus!



Liebe Grüße
von Xeon

Re: Projekte mit make erstellen

Verfasst: Mi Apr 22, 2020 11:19 pm
von Xin
Hi, Xeon,

wenn Du make aktiv brauchst, mache ich mich da mal dran, dass das kompletiert wird.

Das Makefile heißt "Makefile", nicht "Make.bat" und ist ein ganz normales Textfile.

Re: Projekte mit make erstellen

Verfasst: Do Apr 23, 2020 6:25 am
von nufan
Kommt die Verwirrung vielleicht daher, dass in der übergeordneten Seiten ein eigenes "make.bat" (bzw. "make.sh") erstellt wird?
https://www.proggen.org/doku.php?id=c:tutorial:build
"make.bat" ist eine extrem vereinfachte Eigenimplementierung von einem "echten" Makefile.

Re: Projekte mit make erstellen

Verfasst: Fr Apr 24, 2020 12:56 pm
von Xeon
Xin hat geschrieben: wenn Du make aktiv brauchst, mache ich mich da mal dran, dass das kompletiert wird.
Ich lerne make, weil es im bereich C Tutorial Kapitel Build-Systeme am Ende empfohlen wird.
nufan hat geschrieben: Kommt die Verwirrung vielleicht daher, dass in der übergeordneten Seiten ein eigenes "make.bat" (bzw. "make.sh") erstellt wird?
https://www.proggen.org/doku.php?id=c:tutorial:build
Verstehe die Kapitel gehören nicht zusammen.

Diesen Text habe ich in einem Editor geschrieben und als Makefile gespeichert, wie es im Turtorial heißt: Großes 'M' beachten:

Code: Alles auswählen

all: testprogramm

main.o: main.c
        gcc -c -o main.o main.c

node.o: node.c
        gcc -c -o node.o node.c

parameter.o: parameter.c
        gcc -c -o parameter.o parameter.c

testprogramm: node.o main.o parameter.o
        gcc -o testprogramm node.o main.o parameter.o

clean:
        rm testprogramm *.o
Beim Speicher habe ich die Datei als Makefile.bat benannt. Tab Taste habe ich auch beachtet. Anschließend habe
ich die Konsole aufgerufen und die Datei Makefile.bat geöffnet die im selben Verzeichnis ist wie meine Projektdateien. Das Projekt wurde Compiliert, aber es steht folgende Fehlermeldung in der Konsole immer: "Der Befehl "all:" ist entweder falsch geschrieben oder konnte nicht gefunden werden.", "Der Befehl "main.o:" ist entweder falsch geschrieben oder
konnte nicht gefunden werden." etc...

Die Projektdateien sind die selben wie im C Turtorial: node.c main.c...

Verwirrend ist, dass in der Konsole von Xin "make# make" steht:

Code: Alles auswählen

xin@trinity:/home/xin/proggen.org/tutorial/build/make# make
gcc -c -o node.o node.c
gcc -c -o main.o main.c
gcc -c -o parameter.o parameter.c
gcc -o testprogramm node.o main.o parameter.o
xin@trinity:/home/xin/proggen.org/tutorial/build/make# ls -l testprogramm 
-rwxr-xr-x 1 root root 9642 20. Dez 13:04 testprogramm
Habe auch probiert nur "make" in der Konsole einzugeben, trotzdem steht: Der Befehl "make" ist entweder falsch geschrieben oder konnte nicht gefunden werden.



Liebe Grüße
Von Xeon

Re: Projekte mit make erstellen

Verfasst: Fr Apr 24, 2020 3:20 pm
von Xin
Xeon hat geschrieben:
Fr Apr 24, 2020 12:56 pm
Xin hat geschrieben: wenn Du make aktiv brauchst, mache ich mich da mal dran, dass das kompletiert wird.
Ich lerne make, weil es im bereich C Tutorial Kapitel Build-Systeme am Ende empfohlen wird.
Da spricht nichts gegen, aber make ist hier noch nicht groß beschrieben.
Das C-Tutorial soll lediglich den Blick auf Make lenken, dass derartiges existiert.
Xeon hat geschrieben:
Fr Apr 24, 2020 12:56 pm
nufan hat geschrieben: Kommt die Verwirrung vielleicht daher, dass in der übergeordneten Seiten ein eigenes "make.bat" (bzw. "make.sh") erstellt wird?
https://www.proggen.org/doku.php?id=c:tutorial:build
Verstehe die Kapitel gehören nicht zusammen.
Ich habe die Datei make.bat genannt, weil ich zwar auf dem Make hinarbeitete, aber erstmal nur die Idee vorstellen wollte, bevor ich erkläre, dass es da ein spezielles Tool für gibt.
Xeon hat geschrieben:
Fr Apr 24, 2020 12:56 pm
Verwirrend ist, dass in der Konsole von Xin "make# make" steht:

Code: Alles auswählen

xin@trinity:/home/xin/proggen.org/tutorial/build/make# make
gcc -c -o node.o node.c
gcc -c -o main.o main.c
gcc -c -o parameter.o parameter.c
gcc -o testprogramm node.o main.o parameter.o
xin@trinity:/home/xin/proggen.org/tutorial/build/make# ls -l testprogramm 
-rwxr-xr-x 1 root root 9642 20. Dez 13:04 testprogramm
Habe auch probiert nur "make" in der Konsole einzugeben, trotzdem steht: Der Befehl "make" ist entweder falsch geschrieben oder konnte nicht gefunden werden.
Du musst das Programm "Make" installieren.
Das ist beispielsweise beim MinGW dabei, wenn Du Windows nutzt.

Da muss ich wohl nochmal gucken, ob darauf ausreichend hingewiesen wird.

Re: Projekte mit make erstellen

Verfasst: Fr Apr 24, 2020 8:11 pm
von nufan
Xeon hat geschrieben:
Fr Apr 24, 2020 12:56 pm
Verwirrend ist, dass in der Konsole von Xin "make# make" steht:

Code: Alles auswählen

xin@trinity:/home/xin/proggen.org/tutorial/build/make# make
Diese Zeile beinhaltet einige Informationen, die von der Konsole bereitgestellt werden:
* "xin" ist der Name des Benutzers, der die Kommandos ausführt.
* "trinity" ist der Name des Rechners, auf dem das Kommando ausgeführt wird.
* "/home/xin/proggen.org/tutorial/build/make" ist das Verzeichnis, in dem das Kommando ausgeführt wird.
* "#" wird hier als Symbol verwendet, um darzustellen, dass danach ein Kommando eingegeben werden kann. Oft sieht man hier auch "$", üblicherweise wird "#" unter Linux für den administrativen Benutzer ("root") verwendet.
* "make" ist das tatsächlich eingegebene Kommando.

Das erste "make" ist also der Ordner, in dem gearbeitet wird.

Übrigens hast du auch in cmd.exe ein paar zusätzliche Informationen, allerdings deutlich weniger:

Code: Alles auswählen

C:\User\nufan> make.exe
* "C:\User\nufan" ist das Verzeichnis, in dem das Kommando ausgeführt wird.
* ">" wird wie "#" oben als Symbol verwendet, um anzudeuten, dass jetzt ein Kommando eingegeben werden kann.
* "make.exe" ist das tatsächliche eingegebene Kommando.

Re: Projekte mit make erstellen

Verfasst: Fr Apr 24, 2020 10:10 pm
von Xin
nufan hat geschrieben:
Fr Apr 24, 2020 8:11 pm
* "#" wird hier als Symbol verwendet, um darzustellen, dass danach ein Kommando eingegeben werden kann. Oft sieht man hier auch "$", üblicherweise wird "#" unter Linux für den administrativen Benutzer ("root") verwendet.
...und direkt noch mal eine virtuelle Backpfeife im Nebensatz kassiert... :-D

Man sollte nicht als root (aka Administrator) arbeiten, denn wenn man man Mist baut, fragt das System nicht nach, sondern tut, was befohlen wurde - das gilt auch für Befehle wie lösche das aktuelle Verzeichnis. Das macht der ohne Nachfrage und auch rekursiv über alles, was da eingehängt ist. "root darf das". Unix hat keine Laufwerksbuchstaben, die Festplatten hängt man als Verzeichnis ein. Das geht auch mit kompletten Servern, die man in ein Verzeichnis einhängt. Und so hat der Chef eines Bekannten von mir mal versehentlich mit dem Befehl die Festplatten von drei komplette Festplattenserver gelöscht. Mit Betriebsystem und vor allem mit allen Daten. Deswegen sollte man nicht als root arbeiten.

Keine Ahnung, warum ich da offenbar als root unterwegs war, aber Message ist angekommen. :-D

Re: Projekte mit make erstellen

Verfasst: Sa Apr 25, 2020 8:40 am
von nufan
Xin hat geschrieben:
Fr Apr 24, 2020 10:10 pm
Keine Ahnung, warum ich da offenbar als root unterwegs war, aber Message ist angekommen. :-D
Ich wollte damit eigentlich anmerken, dass ich die Kombination ungewöhnlich finde. "xin" deutet auf einen "normalen" (nicht-root) Benutzer hin, "#" allerdings auf einen administrativen Benutzer. Wärst du wirklich als root unterwegs gewesen, hätte ich mir entsprechend "root@trinity:..." erwartet. Klar kann man die Anzeige natürlich beliebig konfigurieren, gerade in einem Tutorial für Einsteiger erleichtern die gängigen Konventionen aber das Verständnis. Ich würde sogar vorschlagen das an dieser Stelle komplett wegzulassen.

Re: Projekte mit make erstellen

Verfasst: Sa Apr 25, 2020 1:01 pm
von Xin
nufan hat geschrieben:
Sa Apr 25, 2020 8:40 am
Ich wollte damit eigentlich anmerken, dass ich die Kombination ungewöhnlich finde. "xin" deutet auf einen "normalen" (nicht-root) Benutzer hin, "#" allerdings auf einen administrativen Benutzer. Wärst du wirklich als root unterwegs gewesen, hätte ich mir entsprechend "root@trinity:..." erwartet.
Hmm... gerade mal ausprobiert.

Code: Alles auswählen

xin@dualpower:~/xsd/make$ sudo bash
[sudo] Passwort für xin: 
root@dualpower:/home/xin/xsd/make# 
Vielleicht war ich als Root unterwegs habe das nur halbwegs kaschiert? Keine Ahnung. :-D
nufan hat geschrieben:
Sa Apr 25, 2020 8:40 am
Klar kann man die Anzeige natürlich beliebig konfigurieren, gerade in einem Tutorial für Einsteiger erleichtern die gängigen Konventionen aber das Verständnis. Ich würde sogar vorschlagen das an dieser Stelle komplett wegzulassen.
Naja, irgendwie muss da eine glaubwürdige Eingabezeile hin. Klar kann man auch einfach > oder sowas nehmen, um anzudeuten, dass man nix andeuten will. :-D

mingw32-make?

Verfasst: Di Apr 28, 2020 3:57 pm
von Xeon
Xin hat geschrieben: Du musst das Programm "Make" installieren.
Das ist beispielsweise beim MinGW dabei, wenn Du Windows nutzt.
Habe MinGW schon länger installiert, ist es mingw32-make?