IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage C++ Discussion :

g++ / options de compilation


Sujet :

Langage C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 60
    Points : 40
    Points
    40
    Par défaut g++ / options de compilation
    Bonjour,

    Il me semblait qu'une compilation en mode debug -g ralentissait le code
    à l'exécution et que pour optimiser un code à l'exécution il faillait compiler
    avec des options comme -O2, -O3, ... en prenant soin de ne pas utiliser en
    même temps -g.

    En essayant de trouver les options de compilation d'une bibliothèque c++
    installer par synaptic sur ma plateforme ubuntu 12.04, je tombe sur un fichier
    buildlog qui contient des choses comme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    make[3]: Entering directory `/build/buildd/getfem++-4.1.1/src'
    /bin/bash ../libtool --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -I../src -I../src -I..  -DGMM_USES_BLAS -I/usr/include  -g -O2 -O3 -Wall -W -fmessage-length=0 -ftemplate-depth-40 -pedantic -Wshadow -Wpointer-arith -Wcast-qual -Wwrite-strings -Wconversion -Wredundant-decls -Wno-long-long -MT dal_backtrace.lo -MD -MP -MF .deps/dal_backtrace.Tpo -c -o dal_backtrace.lo dal_backtrace.cc
    libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I.. -I../src -I../src -I.. -DGMM_USES_BLAS -I/usr/include -g -O2 -O3 -Wall -W -fmessage-length=0 -ftemplate-depth-40 -pedantic -Wshadow -Wpointer-arith -Wcast-qual -Wwrite-strings -Wconversion -Wredundant-decls -Wno-long-long -MT dal_backtrace.lo -MD -MP -MF .deps/dal_backtrace.Tpo -c dal_backtrace.cc  -fPIC -DPIC -o .libs/dal_backtrace.o
    libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I.. -I../src -I../src -I.. -DGMM_USES_BLAS -I/usr/include -g -O2 -O3 -Wall -W -fmessage-length=0 -ftemplate-depth-40 -pedantic -Wshadow -Wpointer-arith -Wcast-qual -Wwrite-strings -Wconversion -Wredundant-decls -Wno-long-long -MT dal_backtrace.lo -MD -MP -MF .deps/dal_backtrace.Tpo -c dal_backtrace.cc  -fPIC -DPIC -o dal_backtrace.o >/dev/null 2>&1
    mv -f .deps/dal_backtrace.Tpo .deps/dal_backtrace.Plo
    où je remarque que les "-g" et "-O2" sont juxtaposés.

    Est ce que quelqu'un peut m'expliquer cette ligne, ce qu'elle fait exactement?
    Merci

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    À partir de la doc :

    GCC allows you to use -g with -O. The shortcuts taken by optimized code may occasionally produce surprising results: some variables you declared may not exist at all; flow of control may briefly move where you did not expect it; some statements may not be executed because they compute constant results or their values are already at hand; some statements may execute in different places because they have been moved out of loops.

    Nevertheless it proves possible to debug optimized output. This makes it reasonable to use the optimizer for programs that might have bugs.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut
    Citation Envoyé par debutant100 Voir le message
    Il me semblait qu'une compilation en mode debug -g ralentissait le code
    à l'exécution et que pour optimiser un code à l'exécution il faillait compiler
    avec des options comme -O2, -O3, ... en prenant soin de ne pas utiliser en
    même temps -g
    Ce n'est pas aussi simple...il est plus facile de débugger sur un binaire non-optimisé, d'où la tendance à utiliser -g -O0...mais comme le souligne oodini, on peut débugger du code optimisé.
    Ce qui ralentit le plus directement un code compilé pour débugger c'est généralement -O0, l'absence d'optimisation...
    -g ne fait 'que' rajouter les symboles de débuggage. Le seul coût dont tu peux être sûr, c'est que ça augmente la taille du code exécutable généré (sauf si tu utilises les options pour séparer exécutable et symboles voir option -gsplit-dwarf dans la doc de gcc). Il est par contre possible que la plus grande taille entraîne des lenteurs par des effets divers (swap?), mais ce n'est pas sûr.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 60
    Points : 40
    Points
    40
    Par défaut
    Merci !!!
    J'étais resté coincé dans la section "Options That Control Optimization".

    En supposant que ça marche ça doit certainement être moins rapide en
    "-g -O2" qu'en "-O2" tout seul. Je crois que je vais faire des tests ....

    merci encore!

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 60
    Points : 40
    Points
    40
    Par défaut
    J'avais envoyé ma réponse avant de voir le message de therwald.

    Je vais faire des tests sur mes codes pour voir l'influence des différentes options
    de compilation.

    Mais pour le coup je suis gêné pour faire des comparaisons avec des codes
    qui sont installés avec des binaires.
    L'idéal serait de les réinstaller à partir des sources ...

    Merci!

Discussions similaires

  1. [compilateur cc] Options de compilation
    Par gangsoleil dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 26/09/2005, 15h25
  2. Option de compilation gcc : sem.h
    Par Luther13 dans le forum Linux
    Réponses: 8
    Dernier message: 29/12/2004, 12h29
  3. [Compilateur]Option de compil
    Par Guybrush dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 30/09/2004, 11h22
  4. Réponses: 2
    Dernier message: 15/05/2004, 18h33
  5. Réponses: 2
    Dernier message: 27/02/2004, 13h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo