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

C++ Discussion :

[Linux/gcc] Fichier de mapping


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut [Résolu][Linux/gcc] Fichier de mapping
    Bonjour,

    J'ai parcourus l'aide de gcc mais je n'ai pas reussi à touver comment générer un fichier de mapping (liste et adresse des variables globales et static).

    Je l'ai deja fait avec d'autres compilateurs mais jamais avec gcc...

    Est ce que c'est possible ?

    Merci

  2. #2
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Et bien après relecture du man de gcc, ca ne semble pas possible... Je suis quand meme très étonné qu'une fonctionnalité aussi basique ne soit pas présente... C'est bizarre mais vu que le man n'en parle pas...

  3. #3
    Membre Expert
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 941
    Par défaut
    Salut,

    Pardonne mon ignorance, mais c'est quoi un fichier de mapping exactement ? A quoi ça sert ? Sur quels environnements tu en utilisais ?

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Ca ne serait une fonctionnalité du linker plutôt que de donner les adresses finales dans un binaire ?

    man ld
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Salut,

    Citation Envoyé par Noxen Voir le message
    Pardonne mon ignorance, mais c'est quoi un fichier de mapping exactement ? A quoi ça sert ?
    Le fichier de mapping, c'est le fichier qui te donne l'adresse de tes variables (static et globales). Cela permet d'aider au debug, notamment pour des programmes sans symbols (ou seul les adresses sont disponibles).

    Citation Envoyé par Noxen Voir le message
    Sur quels environnements tu en utilisais ?
    Linux aussi mais c'etait de la cross compilation. La, c'est une compilation pour linux.

    Citation Envoyé par ram_0000 Voir le message
    Ca ne serait une fonctionnalité du linker plutôt que de donner les adresses finales dans un binaire ?

    man ld
    Ca a l'air bien ca... Mais c'est gcc qui genere mon executable. Il fait un appel à ld ? Ou il a aussi un linker intégré ? En tout cas, merci j'ai l'impression que je vais pouvoir m'en tirer comme ca

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2007
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 190
    Par défaut
    Salut,

    Tu devrais regarder du côté de nm et de objdump.

  7. #7
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Salut,

    Merci pour vos réponses.

    Citation Envoyé par Montag Voir le message
    Tu devrais regarder du côté de nm et de objdump.
    Le probleme c'est que ces 2 programmes vont chercher dans l'executable les symbols (qui n'existent pas sur une version release). Donc c'est pas ce que je veux.

    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    Oui. La structure traditionnelle des compilateurs sous Unix est d'avoir des executables separes pour:
    - le preprocesseur
    - le compilateur (parfois plusieurs executables)
    - l'assembleur
    - le linker
    Des que les machines ont eu assez de memoire pour le faire, les differents executables du compilateur ont ete fusionne car ils n'avaient pas d'autres raisons d'etre. GCC a meme, plus recemment, fusionne le preprocesseur dans le compilateur mais continue a utiliser un assembleur et un editeur de liens externe (et sur des platerformes autres que Linux, pas necessairement fournis par le projet GNU).
    Merci pour ces explications. Mais il y a quelque chose que je ne comprends pas. J'ai regardé le man de ld et il y a le parametre -Map qui fait ce que je veux. Mais ce parametre ne marche pas avec g++. Comment ca se fait ?

    Sinon, j'ai essayé de linker avec ld mais il semble qu'il ne me trouve pas beaucoup de symbols... Il faut inclure toutes les librairies necessaires ??? J'ai essayé de mettre un repertoire (option -L) mais ca ne marche pas

  8. #8
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par hwoarang Voir le message
    Mais c'est gcc qui genere mon executable. Il fait un appel à ld ?
    Oui. La structure traditionnelle des compilateurs sous Unix est d'avoir des executables separes pour:
    - le preprocesseur
    - le compilateur (parfois plusieurs executables)
    - l'assembleur
    - le linker
    Des que les machines ont eu assez de memoire pour le faire, les differents executables du compilateur ont ete fusionne car ils n'avaient pas d'autres raisons d'etre. GCC a meme, plus recemment, fusionne le preprocesseur dans le compilateur mais continue a utiliser un assembleur et un editeur de liens externe (et sur des platerformes autres que Linux, pas necessairement fournis par le projet GNU).

  9. #9
    Membre Expert
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 941
    Par défaut
    Ok, merci hwoarang . Va falloir que je me trouve de la littérature sur le fonctionnement des ordinateurs

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [gcc] Fichier linux/limits.h introuvable
    Par Trap D dans le forum SUSE
    Réponses: 2
    Dernier message: 21/09/2009, 21h48
  2. Réponses: 4
    Dernier message: 10/11/2005, 11h45
  3. [HIBERNATE] Fichier de mapping
    Par SEMPERE Benjamin dans le forum Hibernate
    Réponses: 2
    Dernier message: 20/10/2005, 10h40
  4. [Hibernate] [Eclipse] Création du fichier de mapping
    Par Willy7901 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 11/08/2005, 17h54
  5. [linux][gcc] Comment travaille t-on avec plusieurs fichiers?
    Par kaygee dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 02/04/2004, 17h48

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