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

Autres éditeurs Discussion :

problème de profiling avec gprof


Sujet :

Autres éditeurs

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Points : 3
    Points
    3
    Par défaut problème de profiling avec gprof
    bonjour,

    Pour faire du profiling de code avec gprof, je compile et link mon programme c++ avec -pg.
    Je cross-compil avec un environnement de développement linux i386 et cible linux arm.

    Lors du linkage, j'ai cette erreur:
    /root/buildroot/staging_dir/lib/gcc/arm-linux-uclibc/3.4.4/../../../../arm-linux-uclibc/bin/ld: gcrt1.o: No such file: No such file or directory

    En utilisant find j'ai trouvé ce fichier dans /usr/lib, mais le fichier objet est pour architecture i386.

    Ce fichier est nécessaire quand on utilise l'argument -pg, est-ce que quelqu'un peut me dire où le trouver où bien comment le compiler pour arm?

    a+

  2. #2
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Ta chaine de compilation est fournie par qui ?

    Parfois il faut dire à gcc (cela peut se faire dans un fichier spec) comment (ne pas) utiliser les crt.

    Ma réponse est vague car je ne suis pas expert. Mais pour avoir compilé une chaine pour arm, je me souvient d'avoir du ensuite préciser dans mon fichier specs quel crt0 utiliser.

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    La chaine de compilation est fournit par le client, mais je peux la recompiler éventuellement si il y a des modifications à faire.

    Qu'est-ce que tu appelles fichiers "crt"? ils font quelque chose de spécial?

  4. #4
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Mini FAQ about the misc libc/gcc crt files.

    Some definitions:
    PIC - position independent code (-fPIC)
    PIE - position independent executable (-fPIE -pie)
    crt - C runtime

    crt0.o
    Older style of the initial runtime code ? No one generates this anymore.
    crt1.o
    Newer style of the initial runtime code. Contains the _start symbol which
    sets up the env with argc/argv/libc _init/libc _fini before jumping to the
    libc main. glibc calls this file 'start.S'.
    crti.o
    Defines the function prolog; _init in the .init section and _fini in the
    .fini section. glibc calls this 'initfini.c'.
    crtn.o
    Defines the function epilog. glibc calls this 'initfini.c'.
    Scrt1.o
    Used in place of crt1.o when generating PIEs.
    gcrt1.o
    Used in place of crt1.o when generating code with profiling information.
    Compile with -pg. Produces output suitable for the gprof util.
    mcrt1.o
    Like gcrt1.o, but is used with the prof utility. glibc installs this as
    a dummy file as it's useless on linux systems.

    crtbegin.o
    GCC uses this to find the start of the constructors.
    crtbeginS.o
    Used in place of crtbegin.o when generating shared objects/PIEs.
    crtbeginT.o
    Used in place of crtbegin.o when generating static executables.
    crtend.o
    GCC uses this to find the start of the deconstructors.
    crtendS.o
    Used in place of crtendS.o when generating shared objects/PIEs.


    General linking order:
    crt1.o crti.o crtbegin.o [-L paths] [user objects] [gcc libs] [C libs] [gcc libs] crtend.o crtn.o
    Tiré de http://www.uclibc.org/cgi-bin/viewcv....txt?rev=15718

    Aussi, tu peux vérifier à la compile de ton programme ce qui se passe exactement (notamment lors du link) en tapant, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #gcc --verbose -o hello hello.c
    Tu verras que ld linke ton hello.o avec des crt*.o

    Donc dans ton cas, il se peut que tu n'ais pas de crt1 dans ta chaine de compile alors que gcc en requiers un (je trouve bizare quand même qu'on t'ai livré une chaine de compile qui ne fonctionne pas par défaut).

    Pour ma part (je ne sais pas si c'est cela qu'il faut faire pour être "strandard"), j'ai fait un fichier .specs avec dedans, par exemple (c'est une chaine de compile pour game-boy advance) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    [...]
    *startfile:
    agb-crt0%O%s crti%O%s crtbegin%O%s
    [...]
    Puis lors de la compile j'appelle le compilo avec (toujours par exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CFLAGS= -specs=agb.specs -O2 -Wall -mthumb
    Il y a peut être des manières plus simples ou plus élégantes de faire. Mais j'espère que cela t'auras donné des pistes.

    HTH.

Discussions similaires

  1. [Joomla!] Problème de profil utilisateur avec Joomla estate agency
    Par bigboss29 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 06/12/2012, 02h54
  2. [MySQL] Problème Affichage Profil avec session
    Par makamine dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 13/04/2011, 20h00
  3. Réponses: 3
    Dernier message: 23/11/2004, 09h44
  4. Problèmes de versions avec Xalan, Xerces et Java
    Par honeyz dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 05/06/2003, 10h18

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