Zum Inhalt springen

MinGW/MSYS, g++, make und Co. ???


DITTY

Empfohlene Beiträge

Moin COM,

ich weiß, Ihr würdet mich jetzt am liebsten lünchen, schlagen und auseinandernehmen, aber ich brauche wiedermal Eure Hilfe.

Ich versuchs mal kurz zu halten:

(ich werds mal nummerieren. Verwendet für weiteres bitte die Nummern1)

1.) MSYS und MinGW:

Wozu dient MSYS wirklich (im Bezug auf MinGW)?

Wikipedia hin oder her, mir wird irgendwie nicht ganz klar, wozu man MSYS installieren sollte??? Und, wie rum muss man beides installieren?

Erst MSYS, dann MinGW (hab ich irgendwo gelesen) oder erst MinGW, dann MSYS (hab ich auch gelesen)?

2.) g++.exe vs. mingw32-g++.exe?

Im Bin-Verzeichnis von MinGW gibts die beiden EXEn g++ und mingw32-g++.

Aber warum nur und inwieweit unterscheiden sich diese?

Welche sollte man zum Coden verwenden?

3.) gcc vs. g++:

Ist es richtig, dass gcc für C-Code und g++ für C++-Code zuständig ist?

Oder würde im Grunde g++ ausreichen? Kann g++ beides, sowohl C, als auch C++. Wenn ja, wozu hat gcc dann noch eine Daseinsberechtigung?

4.) make:

Im MinGW-Bin-Verzeichnis gibt es die EXE "mingw32-make.exe".

Anders ausgedrückt, es ist die Make.exe.

Aber, und jetzt haltet Euch fest. Mir ist bis heute nicht klar, wozu die make.exe überhaupt dient??? Ich meine, reicht GCC btw. G++ nicht allein um zu coden? Wozu sollte man die make einsetzen und welche Vorteile ergeben sich daraus?

5.) Last but not least, es geht um die Parameter-Referenzen zu den drei Exen, gcc, g++ und make. Sicher, die Hilfe spuckt viel aus, nur leider stets auf englisch (ja, ich hasse diese Sprache) und zum Teil trotzdem unverständlich. Darum wollte ich Euch mal darum bitten, mir die einzelnen Parameter im großen und ganzen, eventuell mit Beispielen, und auf deutsch verständlich zu machen. Entsprechendes habe ich mal schon versucht zu übersetzen und zu deuten, dennoch ergeben sich für mich noch einige Unklarheiten:

------------------------------------------------------------------

(Bekanntes wird Fett hinterlegt!)

gcc.exe

Usage: gcc [options] file...

Options:

-pass-exit-codes = Exit with highest error code from a phase

--help = Hilfe zur gcc.exe

--target-help = Display target specific command line options

(Use '-v --help' to display command line options of sub-processes)

-dumpspecs = Display all of the built in spec strings

-dumpversion = Versionsnummer des Compilers

-dumpmachine = Display the compiler's target processor

-print-search-dirs = Display the directories in the compiler's search path

-print-libgcc-file-name = Display the name of the compiler's companion library

-print-file-name=<lib> = Display the full path to library <lib>

-print-prog-name=<prog> = Display the full path to compiler component <prog>

-print-multi-directory = Display the root directory for versions of libgcc

-print-multi-lib = Display the mapping between command line options and

= multiple library search directories

-print-multi-os-directory = Display the relative path to OS libraries

-Wa,<options> = Pass comma-separated <options> on to the assembler

-Wp,<options> = Pass comma-separated <options> on to the preprocessor

-Wl,<options> = Pass comma-separated <options> on to the linker

-Xassembler <arg> = Pass <arg> on to the assembler

-Xpreprocessor <arg> = Pass <arg> on to the preprocessor

-Xlinker <arg> = Pass <arg> on to the linker

-save-temps = Do not delete intermediate files

-pipe = Use pipes rather than intermediate files

-time = Time the execution of each subprocess

-specs=<file> = Override built-in specs with the contents of <file>

-std=<standard> = Assume that the input sources are for <standard>

-B <directory> = Füge <Verzeichnis> zum Compiler-Such-Pfad

-b <machine> = Führe gcc für Ziel- <machine>, wenn installiert aus

-V <version> = Starte gcc Versions-Nummer <version>, wenn install.

-v = Display the programs invoked by the compiler

-### = Like -v but options quoted and commands not executed

-E = Preprocess allein; kein compile, assemble oder link

-S = Compile allein; kein assemble oder link

-c = Compile und assemble, kein link

-o <file> = Gebe aus in das File <file>

-x <language> = Specify the language of the following input files

Permissible languages include: c c++ assembler none

'none' means revert to the default behavior of

guessing the language based on the file's extension

Options starting with -g, -f, -m, -O, -W, or --param are automatically

passed on to the various sub-processes invoked by gcc. In order to pass

other options on to these processes the -W<letter> options must be used.

For bug reporting instructions, please see:

<URL:http://www.mingw.org/bugs.shtml>.

------------------------------------------------------------------

(Bekanntes wird Fett hinterlegt!)

g++.exe

Usage: g++ [options] file...

Options:

-pass-exit-codes = Exit with highest error code from a phase

--help = Hilfe zur gcc.exe

--target-help = Display target specific command line options

(Use '-v --help' to display command line options of sub-processes)

-dumpspecs = Display all of the built in spec strings

-dumpversion = Versionsnummer des Compilers

-dumpmachine = Display the compiler's target processor

-print-search-dirs = Display the directories in the compiler's search path

-print-libgcc-file-name = Display the name of the compiler's companion library

-print-file-name=<lib> = Display the full path to library <lib>

-print-prog-name=<prog> = Display the full path to compiler component <prog>

-print-multi-directory = Display the root directory for versions of libgcc

-print-multi-lib = Display the mapping between command line options and

= multiple library search directories

-print-multi-os-directory = Display the relative path to OS libraries

-Wa,<options> = Pass comma-separated <options> on to the assembler

-Wp,<options> = Pass comma-separated <options> on to the preprocessor

-Wl,<options> = Pass comma-separated <options> on to the linker

-Xassembler <arg> = Pass <arg> on to the assembler

-Xpreprocessor <arg> = Pass <arg> on to the preprocessor

-Xlinker <arg> = Pass <arg> on to the linker

-save-temps = Do not delete intermediate files

-pipe = Use pipes rather than intermediate files

-time = Time the execution of each subprocess

-specs=<file> = Override built-in specs with the contents of <file>

-std=<standard> = Assume that the input sources are for <standard>

-B <directory> = Füge <Verzeichnis> zum Compiler-Such-Pfad

-b <machine> = Führe gcc für Ziel- <machine>, wenn installiert aus

-V <version> = Starte gcc Versions-Nummer <version>, wenn install.

-v = Display the programs invoked by the compiler

-### = Like -v but options quoted and commands not executed

-E = Preprocess allein; kein compile, assemble oder link

-S = Compile allein; kein assemble oder link

-c = Compile und assemble, kein link

-o <file> = Gebe aus in das File <file>

-x <language> = Specify the language of the following input files

Permissible languages include: c c++ assembler none

'none' means revert to the default behavior of

guessing the language based on the file's extension

Options starting with -g, -f, -m, -O, -W, or --param are automatically

passed on to the various sub-processes invoked by gcc. In order to pass

other options on to these processes the -W<letter> options must be used.

For bug reporting instructions, please see:

<URL:http://www.mingw.org/bugs.shtml>.

------------------------------------------------------------------

(Bekanntes wird Fett hinterlegt!)

mingw32-g++.exe

Usage: mingw32-g++.exe [options] file...

Options:

-pass-exit-codes = Exit with highest error code from a phase

--help = Hilfe zur gcc.exe

--target-help = Display target specific command line options

(Use '-v --help' to display command line options of sub-processes)

-dumpspecs = Display all of the built in spec strings

-dumpversion = Versionsnummer des Compilers

-dumpmachine = Display the compiler's target processor

-print-search-dirs = Display the directories in the compiler's search path

-print-libgcc-file-name = Display the name of the compiler's companion library

-print-file-name=<lib> = Display the full path to library <lib>

-print-prog-name=<prog> = Display the full path to compiler component <prog>

-print-multi-directory = Display the root directory for versions of libgcc

-print-multi-lib = Display the mapping between command line options and

= multiple library search directories

-print-multi-os-directory = Display the relative path to OS libraries

-Wa,<options> = Pass comma-separated <options> on to the assembler

-Wp,<options> = Pass comma-separated <options> on to the preprocessor

-Wl,<options> = Pass comma-separated <options> on to the linker

-Xassembler <arg> = Pass <arg> on to the assembler

-Xpreprocessor <arg> = Pass <arg> on to the preprocessor

-Xlinker <arg> = Pass <arg> on to the linker

-save-temps = Do not delete intermediate files

-pipe = Use pipes rather than intermediate files

-time = Time the execution of each subprocess

-specs=<file> = Override built-in specs with the contents of <file>

-std=<standard> = Assume that the input sources are for <standard>

-B <directory> = Füge <Verzeichnis> zum Compiler-Such-Pfad

-b <machine> = Führe gcc für Ziel- <machine>, wenn installiert aus

-V <version> = Starte gcc Versions-Nummer <version>, wenn install.

-v = Display the programs invoked by the compiler

-### = Like -v but options quoted and commands not executed

-E = Preprocess allein; kein compile, assemble oder link

-S = Compile allein; kein assemble oder link

-c = Compile und assemble, kein link

-o <file> = Gebe aus in das File <file>

-x <language> = Specify the language of the following input files

Permissible languages include: c c++ assembler none

'none' means revert to the default behavior of

guessing the language based on the file's extension

Options starting with -g, -f, -m, -O, -W, or --param are automatically

passed on to the various sub-processes invoked by gcc. In order to pass

other options on to these processes the -W<letter> options must be used.

For bug reporting instructions, please see:

<URL:http://www.mingw.org/bugs.shtml>.

------------------------------------------------------------------

(Bekanntes wird Fett hinterlegt!)

mingw32-make.exe

Usage: mingw32-make.exe [options] [target] ...

Options:

-b, -m Ignored for compatibility.

-B, --always-make Unconditionally make all targets.

-C DIRECTORY, --directory=DIRECTORY

Change to DIRECTORY before doing anything.

-d Print lots of debugging information.

--debug[=FLAGS] Print various types of debugging information.

-e, --environment-overrides

Environment variables override makefiles.

-f FILE, --file=FILE, --makefile=FILE

Read FILE as a makefile.

-h, --help Print this message and exit.

-i, --ignore-errors Ignore errors from commands.

-I DIRECTORY, --include-dir=DIRECTORY

Search DIRECTORY for included makefiles.

-j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no arg.

-k, --keep-going Keep going when some targets can't be made.

-l [N], --load-average[=N], --max-load[=N]

Don't start multiple jobs unless load is below N.

-L, --check-symlink-times Use the latest mtime between symlinks and target.

-n, --just-print, --dry-run, --recon

Don't actually run any commands; just print them.

-o FILE, --old-file=FILE, --assume-old=FILE

Consider FILE to be very old and don't remake it.

-p, --print-data-base Print make's internal database.

-q, --question Run no commands; exit status says if up to date.

-r, --no-builtin-rules Disable the built-in implicit rules.

-R, --no-builtin-variables Disable the built-in variable settings.

-s, --silent, --quiet Don't echo commands.

-S, --no-keep-going, --stop

Turns off -k.

-t, --touch Touch targets instead of remaking them.

-v, --version Print the version number of make and exit.

-w, --print-directory Print the current directory.

--no-print-directory Turn off -w, even if it was turned on implicitly.

-W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE

Consider FILE to be infinitely new.

--warn-undefined-variables Warn when an undefined variable is referenced.

This program built for i686-pc-mingw32

Report bugs to <bug-make@gnu.org>

------------------------------------------------------------------

Wär super, wenn wir das mal vervollständigen könnten und ggfl. mit Beispielen hinterlegen könnten.

6.) Folgende Anwendungsbeispiele (nicht auf 5ens bezogen!)

Beim Recherchieren im Netz sind mir folgende Zeilen aufgefallen:

g++ -Wall -ansi -c foo.cpp -o foo.o

g++ -Wall -ansi -c -o programmname main.c foo.o bar.o ...

g++ -O0 -g3 -Wall -c -fmessage-length=0 -ohelloworldv1.o ..\helloworldv1.cpp

g++ -oTest21.exe helloworldv1.o

gcc -Wall -Wextra -pedantic -o test.exe test.c -lws2_32

-lws2_32

-shared Option von g++ eine DLL gebaut.

g++ -mno-cygwin -c testlib.cpp

g++ -mno-cygwin -shared -o testlib.dll testlib.o

g++ -L. -o"testdll.exe" ./test.o -ldll

den o-Befehl verstehe ich ja in etwa (wär trotzdem super, wenn mir jemand den erklären könnte, sicher ist sicher), aber all das andere, hmmm, naja, lässt sich nur deuten, wirklich Ahnung habe nicht und beim Versuch Google zu bemühen bekomme ich meistens nur Links, wo es schon mehr ins Eingemachte geht, nicht aber wirklich für Laien, wie mich geeignet ist.

Wär mir super, wenn mir jemand diese Zeilen jeweils einzeln Step-by-Step erklären könnte.

################################################

So, soweit zu meinen Fragen. Ich weiß, manches ist irgendwie simpl, aber bedenkt, hier sitzt ein Laie, der (noch) nicht wirklich Ahnung von hat und wegen ein paar Befehle, werde ich nicht gleich Regale lesen müssen, da ich im mom nicht alles wissen möchte, sondern nur die paar aufgezählte Dinge. Für Euch doch betsimmt leicht erklärbar oder nicht?

Nicht nur ich, sondern auch viele andere, die sich noch damit beschäftigen wollen, wären Euch zu tiefst dankbar dafür (und wie bei Google und Co. sieht, scheinen das viele zu sein).

Gruß

DITTY :):):):):)

Bearbeitet von DITTY
Link zu diesem Kommentar
Auf anderen Seiten teilen

Minimal SYStem ? Wikipedia

Ich habe jetzt extra für dich MinGW installiert und g++.exe und mingw32-g++.exe verglichen. Da ist mir gleich aufgefallen, dass die Dateien gleich groß sind. Und was soll ich sagen, sie sind sogar identisch. Das hättest du auch selbst rausfinden können.

gcc und g++ sind Frontends für C und C++.

make ? Wikipedia

Darum wollte ich Euch mal darum bitten, mir die einzelnen Parameter im großen und ganzen, eventuell mit Beispielen, und auf deutsch verständlich zu machen.
Ist dir klar, dass das nur die allerwichtigsten Schalter sind? Die Compiler haben sehr viel mehr davon, allein dutzende -f-Schalter.

So eine Frage ist ehrlich gesagt eine Frechheit. Arbeite dich in die Grundlagen ein, dann lernst du die Schalter nach und nach wenn du sie brauchst. Wenn du dann etwas nicht verstehst, frag nach.

So, soweit zu meinen Fragen. Ich weiß, manches ist irgendwie simpl, aber bedenkt, hier sitzt ein Laie, der (noch) nicht wirklich Ahnung von hat und wegen ein paar Befehle, werde ich nicht gleich Regale lesen müssen, da ich im mom nicht alles wissen möchte, sondern nur die paar aufgezählte Dinge.
Es bringt nichts, wenn du irgendwelche isolierte Häppchen lernst, und dabei die Grundlagen weglässt.

Für Euch doch betsimmt leicht erklärbar oder nicht?
Im Prinzip ja. Wir würden dabei nur eine Menge Wörter benutzen, die du nicht verstehst, weil die Grundlagen fehlen. Die müssten wir dann wieder erklären. Und das würde immer so weiter gehen. Und dazu hat niemand Lust.

Das Forum ist nicht deine persönliche Tutorialmaschine. Hier wird sich niemand für dich hinsetzen und aufarbeiten, was jeder andere in Monaten oder Jahren lernen musste. Zumindest nicht für lau.

Lern das so wie jeder Andere vor dir auch, oder stell eben jemanden ein, der dir das so erklärt, wie du es möchtest.

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Klotzkopp: Du hättest das nicht installieren müssen. Ich hab's hier laufen und hätte sicher auch drauf geantwortet.

@Ditty: Kauf Dir endlich mal ein paar Bücher über C/C++, installier Dir ein Linux und kompiliere mal ein paar Source per Hand durch. Und dann versuchst Du einmal selbst Deine Sources via Make oder auch Scons selbst zu kompilieren. Ich kann mich wirklich nur der allgm. Meinung anschließen, das Forum ist nicht dafür gedacht, dass Dir hier jeder Parameter / Detail erklärt wird.

Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

auch wenn ich jetzt nichts Neues schreibe, aber das nimmt hier schon trolige Ausmaße an. Du möchtest jedes Mal 50 oder mehr Zeilen erklärt bekommen, und jedes Mal wird dir der Tipp gegeben, dich intensiv in Linux bzw. Unix einzuarbeiten.

Und das kann ich dir auch gleich sagen: Wenn du dich nicht mit Englisch anfreudest, wirst du richtig Schwierigkeiten bekommen was den Umgang mit Compilern, Tutorials und Büchern angeht.

...hier sitzt ein Laie...

Warum fängst du dann nicht bei Adam und Eva an? Gerade am Anfang muss man bestimmte Dinge erstmal als gegeben hinnehmen. Es macht keinen Sinn, sofort alles zu hinterfragen und verstehen zu wollen, und es ist auch unmöglich, jeden Parameter verstehen zu können. Manche Dinge ergeben sich automatisch, wenn man sich intensiver mit dem Thema auseinandersetzt. Natürlich ist Neugier wichtig, aber du gehst da ganz falsch ran. Ich habe selber C und C++ in Eigenregie gelernt, und bis heute kenne ich nur einen kleinen Teil der Parameter des gcc, aber das reicht völlig.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe jetzt extra für dich MinGW installiert und g++.exe und mingw32-g++.exe verglichen. Da ist mir gleich aufgefallen, dass die Dateien gleich groß sind. Und was soll ich sagen, sie sind sogar identisch. Das hättest du auch selbst rausfinden können.

Na, was denkste, warum ich tortzdem hier Frage. Natürlich ist mir das gleiche aufgefallen (habs auch selber herausgefunden. Auf den Kopf gefallen bin ich ja nu nicht). Es muss doch trotzdem irgendwie einen Grund geben, warum beides angeboten wird, denn auf den Kopf gefallen sind die MinGW-Entwickler auch nicht. Nur finde ich nirgends im i-net eine Quelle, die mir dieses Phänomen erklärt. Wenn dazu jemand mehr weiß, bitte posten.

Ist dir klar, dass das nur die allerwichtigsten Schalter sind? Die Compiler haben sehr viel mehr davon, allein dutzende -f-Schalter.

So eine Frage ist ehrlich gesagt eine Frechheit. Arbeite dich in die Grundlagen ein, dann lernst du die Schalter nach und nach wenn du sie brauchst. Wenn du dann etwas nicht verstehst, frag nach.

Das es noch mehr f-schalter, vielleicht auch noch andere Schalter gibt, wusste ich garnicht, thx. Ich suche ja schon im i-net. Nur finde ich keine guten Links mit Referenzen dazu. Kann mir jemand gute Links zur Parameter-Liste geben (wenn möglich mit Anwendungsbeispielen und am besten auf deutsch (nicht zwingend erforderlich).

Im Prinzip ja. Wir würden dabei nur eine Menge Wörter benutzen, die du nicht verstehst, weil die Grundlagen fehlen. Die müssten wir dann wieder erklären. Und das würde immer so weiter gehen. Und dazu hat niemand Lust.

Und schon wieder. Probierts doch wenigstens. Wie ich in einem anderen Thread schonmal erwähnt habe, bin ich hier nicht der Einzige, der nach Antworten für entsprechende Fragen sucht.

Ich suche keine persönliche Tutorialsuchmaschiene, sondern einfach nur Antworten auf meine paar Fragen. Ich verlange doch nicht, sofort jede Frage zu beantworten. Es wäre mir schonmal mehr geholfen, wenigstens eine oder zwei Fragen beantwortet zu haben.

alle Parameter sind in der entsprechenden Manual-Page ergklärt. Vielleicht schaust Du erstmal dort nach (die gcc/g++ man pages sind recht ausführlich und erklären im Detail die oben genannten Optionen und die Parameter).

Wo finde ich diese, Link?

Und gibts keine deutschen Quellen (ja ich weiß, englisch ist wichtig), wo einem die wichtigsten Parameter erklärt werden. Sozusagen die Manual-Page auf German?

@Ditty: Kauf Dir endlich mal ein paar Bücher über C/C++,

Und schon wieder. Warum für alles und jeden ein Buch kaufen. Was denkt Ihr, bin ich ein Millionär? Natürlich bin ich im Besitz von zahlreichen Büchern (ja, ich lese und studiere sie sogar), nur geht es da mehr um C/C++-Spezifischeres, nicht um die Anwendung von Kompilern, Make und Co, da einem sowas durch IDE´s abgenommen wird.

Zudem ist das i-net ein groooooßes Buch. Wenn also jemand gute Links parat hätte, des Thema betreffend, so wäre ich sehr dankbar.

Und wie soll ich jemals g++ und make halbwegs beherschen, wenn ich keine guten Quellen habe, wo ich mich informieren kann?

Meinung anschließen, das Forum ist nicht dafür gedacht, dass Dir hier jeder Parameter / Detail erklärt wird.

Dann lass es sein, immerhin zwinge ich keinem dazu. Wer dennoch so nett wäre, die Parameter im Groben und Ganzen zu erklären, ggfl. mit Anwendungsbeispiele, so wäre ich sehr dankbar. Aber bitte greift es nicht wieder auf, dass Ihr alles übernehmen sollt, es wäre mir schon etwas geholfen, ein paar ordentlich zu verstehen.

auch wenn ich jetzt nichts Neues schreibe, aber das nimmt hier schon trolige Ausmaße an. Du möchtest jedes Mal 50 oder mehr Zeilen erklärt bekommen,

Erstens, ich bin dankbar für Deine Tipps, ja echt. Aber hier liegst Du falsch. Wie ich schon dutzende Male erwähnt habe, geht es mir nicht darum, dass sich jemand die Mühe macht (auch wenns wünschenswert ist), 50 Zeilen oder mehr erklärt zu bekommen. Bei 2-5 Zeilen wär mir schonmal weitergeholfen, wenigstens etwas. So habe ich und jeder Weitere, der am Gleichen interessiert ist, überhaupt nichts davon.

--------------------------------------------------------------------

Ein bissl Verständnis habe ich schon erwartet.

Nur mal so nebenbei gesagt, die Fragen 1.), 3.), 4.) und 6.)sind wohl nichts Konkretes und nicht nur wenige Zeilen?

Insb. bin ich sehr an Frage 1 und Frage 6 interessiert.

Ich danke sehr für jeden weiteren konstuktiven Tipp und Quellen.

Gruß

DITTY :):):):)

Bearbeitet von DITTY
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...