C/C++ G++ Compiler: Bedeutung des "-s" flag

bastla

mit bastla_Assi
Hallo zusammen :)

meine C++ Programme kompiliere ich normalerweise mit dem g++-Compiler unter Windows (Standard MinGW). Ich wundere mich schon seit einiger Zeit, dass Programme, die mit g++ kompiliert wurden, im Vergleich zu MSVC ziemlich groß sind.

Ein Beispiel
Ich habe folgendes 08-15 Hello-World-Programm:
Code:
#include <iostream>
using namespace std;

int main() {
	cout << "Hello World!" << endl;
	
	return 0;
}

Wenn ich das Programm ohne Tuning mit
Code:
g++ hello_world.cpp -o hello_world.exe
kompiliere, erhalte ich eine 51,21 Kilobyte große Datei. Diese Datei lässt sich nicht auf Windows Vista ausführen, da die C++-Bibliothek in Form einer DLL fehlt (ich dachte, MinGW linkt vollständig gegeben die Win-API), wenn sie auf Windows 7 kompiliere. Meine erste Frage wäre also, woran liegt das?

Wenn ich nun folgenden Befehl verwende
Code:
g++ hello_world.cpp -s -o hello_world.exe
ist das Endprodukt plötzlich nur noch 8,704 Kilobyte groß. Ich bin nur zufällig über das Flag "-s" gestolpert, ich wollte eigentlich "-S" aufrufen. Zweite Frage also: Was ist genau die Funktion von dem "-s" Flag?

Ich danke schonmal für Antworten und Gruß,
bastla :)
 
Oben