Originariamente inviato da paperino00
Salve, oggi ho compilato con codeblocks questo programma c++

codice:
#include <iostream>
int main()
{
std::cout << "Ciao!";
}
e il file compilato è stato un exe di 888 kb cioè quasi un megabyte, a me sembra eccessivo voi che ne dite? è normale?
In modalità debug è normale, dal momento che l'eseguibile non è ottimizzato e contiene tutte le informazioni di debug. Prova a cambiare il build target da Debug a Release, vedrai che le dimensioni diminuirà. Nota però che normalmente si usa il target Debug in modo da poter effettuare il debug del programma senza problemi, e si compila in modalità Release solo quando si vuole generare il programma da distribuire: poiché infatti in modalità Release l'ottimizzatore è attivato non esiste più una corrispondenza uno a uno sorgente-codice macchina generato, per cui è molto più difficile effettuare il debug con un eseguibile generato in tale maniera.
in c++ come si fa a sapere che libreria bisogna scegliere per delle funzioni? da qualche parte per esempio c'è scritto che std richiede iostream?
1. Non sono librerie, sono file di inclusione.
2. Sta tutto scritto nella documentazione (ad esempio qui).
e perchè serve mettere "std::" prima di cout?
Perché cout sta nel namespace std, come tutti i nomi della libreria standard C++.
come si fa a creare una libreria ?
Per creare un header, basta creare un normale file di testo contenente le dichiarazioni e salvarlo nella medesima cartella del .cpp. Se si tratta solo di roba template o funzioni inline basta quello, altrimenti hai bisogno di una controparte .cpp da compilare e linkare insieme ai programmi che fanno uso dell'header in questione.
Se vuoi creare una libreria statica vera e propria la questione è più complicata.
per esempio iostream che cosa contiene?
http://cplusplus.com/reference/iostream/