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

GCC Discussion :

linkage partiel de fichiers objet


Sujet :

GCC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Ing�nieur consultant
    Inscrit en
    Novembre 2004
    Messages
    64
    D�tails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Ing�nieur consultant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 64
    Par d�faut linkage partiel de fichiers objet
    Bonjour,

    Je cherche comment linker (avec gcc) seulement certain symbole (fonction) dans un fichier objet.

    Je m'explique d'un c�t�, j'ai une premi�re paire de fichiers (objet + header):

    file1.h
    file1.o contenant le code compil� des functions.

    De l'autre je cr�e un autre fichier objet contenant une autre version compil�e de f1():

    file2.o

    Enfin, j'ai un fichier

    main.c
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    #include "file1.h"
     
    main()
    {
    	f1();
    	f2();
    }
    Je voudrais pouvoir compiler mon programme avec f1 issue de file2.o et f2 issue de file1.o

    une ligne de commande du genre:

    gcc main.c file2.o file1.o<ne prend que f2>

    Je pr�cise bien je n'ai pas le code source de file1.o

    Si quelqu'un est expert dans les commandes gcc ou ld.

  2. #2
    Membre confirm�
    Profil pro
    Ing�nieur consultant
    Inscrit en
    Novembre 2004
    Messages
    64
    D�tails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Ing�nieur consultant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 64
    Par d�faut
    Comme j'ai trouv� la r�ponse � ma question, je poste si �a int�resse du monde.

    Une solution se trouve gr�ce � l'utilitaire objcopy fournit avec les binutils.

    La commande nm permet de conna�tre les symboles contenus dans un fichier objet, on a donc :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    # nm file1.o
    00000000 T f1
    0000000a T f2
    ainsi que

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    # nm file2.o
    00000000 T f1
    On va donc se cr�er un fichier file1_bis.o ne contenant plus le symbole f1.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    objcopy --strip-symbol=f1  file1.o file1_bis.o
    On obtient alors :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    # nm file1_bis.o
    0000000a T f2
    Il ne reste plus qu'� linker le tout :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    gcc main.c file2.o file1_bis.o
    Et voil�.

    objcopy � plein d'autres options sympa, bon je ne vous fais pas la copie du RTFM (man objcopy...)

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Erreur de compilation de fichier objet avec gtk
    Par oranoutan dans le forum GTK+
    R�ponses: 2
    Dernier message: 14/09/2007, 15h22
  2. [j3D] integrer un fichier objet
    Par vero55 dans le forum 3D
    R�ponses: 2
    Dernier message: 19/04/2007, 13h28
  3. Ouvrir partiellement un fichier texte
    Par wjc dans le forum Windows XP
    R�ponses: 4
    Dernier message: 21/09/2006, 22h42
  4. R�ponses: 3
    Dernier message: 07/07/2006, 18h00
  5. [HTML] T�l�charger partiellement un fichier
    Par MiJack dans le forum Entr�e/Sortie
    R�ponses: 6
    Dernier message: 07/10/2005, 09h55

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