https://gcc.gnu.org/onlinedocs/gcc/Overall-Options.html#Overall-Options
https://gcc.gnu.org/onlinedocs/gcc-6.1.0/gcc/C-Dialect-Options.html#C-Dialect-Options
Utilisation classique :
g++ fichier.cpp -std=c++11 -Wall -Wextra -o fichier_executable
-o fichier_executable
-o pour output, permet de définir le fichier de sortie. Si absent, le fichier créé est nommé a.out
Détermine le langage standard:
-std=c++14
Compilation simple (sans assemblage) :
Pour simplement compiler afin de vérifier l'absence d'erreur (ou plutôt voir ses erreurs), on utilise :
g++ -S fichier.cpp
Warnings:
pour que le compilateur retourne des warning sur des parties de codes qui lui semble incorrecte, on utilise généralement :
-Wall
on retrouve la liste des options que cela englobe à l'adresse ci-dessous:
https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
on peut compléter -Wall avec
-Wextra
Debug:
il faut ajouter l'option
-g
J'utilise, pour des tests, cgdb
cf. ce petit tutoriel: http://perso.ens-lyon.fr/daniel.hirschkoff/C_Caml/docs/doc_gdb.pdf
Consigne de pré-compilation:
J'ai écris du code uniquement utilisé pendant la phase de test. Pour le compiler et le lié à mon exécutable, j'utilise:
g++ -D TEST …
Le code contenu dans un fichier tel que:
#ifdef TEST … #endif
sera compilé. Si on oublie, la compilation risque de bien se passer mais à l'édition de lien…undefined reference to
Optimisation:
-O1 ou -O2 ... ou -O3
Quelle version utilise-t-on?
g++ --version
32 bits:
-m32
Édition de liens:
Petit rappel sur les librairies: si sous windows on a les .lib pour les librairies statiques et les .dll pour les librairies dynamiques, sous Linux, on a les .a en statique et les .so en dynamique.
Pour connaître les chemins pas défaut où g++ cherche les librairies:
ld --verbose | grep SEARCH_DIR | tr -s ' ;' \\012
http://www.mingw.org/wiki/LibraryPathHOWTO
Avec Mingw:
http://www.mingw.org/wiki/Specify_the_libraries_for_the_linker_to_use
Autres liens:
http://tcuvelier.developpez.com/tutoriels/cross-gcc/gcc-natif/
http://c.developpez.com/cours/mode-emploi-gcc/
http://www3.ntu.edu.sg/home/ehchua/programming/cpp/gcc_make.html#zz-1.5
http://www.cprogramming.com/tutorial/shared-libraries-linux-gcc.html