Projekte mit make erstellen

Diskussionen zu Tutorials, Änderungs- und Erweiterungswünsche
Xeon
Beiträge: 169
Registriert: So Dez 17, 2017 4:10 pm

Projekte mit make erstellen

Beitrag von Xeon » Mi Apr 22, 2020 2:20 pm

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

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Projekte mit make erstellen

Beitrag von Xin » Mi Apr 22, 2020 11:19 pm

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.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

nufan
Wiki-Moderator
Beiträge: 2557
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Projekte mit make erstellen

Beitrag von nufan » Do Apr 23, 2020 6:25 am

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.

Xeon
Beiträge: 169
Registriert: So Dez 17, 2017 4:10 pm

Re: Projekte mit make erstellen

Beitrag von Xeon » 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.
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

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Projekte mit make erstellen

Beitrag von Xin » Fr Apr 24, 2020 3:20 pm

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.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

nufan
Wiki-Moderator
Beiträge: 2557
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Projekte mit make erstellen

Beitrag von nufan » Fr Apr 24, 2020 8:11 pm

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.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Projekte mit make erstellen

Beitrag von Xin » Fr Apr 24, 2020 10:10 pm

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
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

nufan
Wiki-Moderator
Beiträge: 2557
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Projekte mit make erstellen

Beitrag von nufan » Sa Apr 25, 2020 8:40 am

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.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Projekte mit make erstellen

Beitrag von Xin » Sa Apr 25, 2020 1:01 pm

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
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Xeon
Beiträge: 169
Registriert: So Dez 17, 2017 4:10 pm

mingw32-make?

Beitrag von Xeon » Di Apr 28, 2020 3:57 pm

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?

Antworten