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 :

Chargement dynamique de code


Sujet :

C

  1. #21
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 149
    Par défaut
    oups j'ai oublié le pas...

    Je ne comprends pas le rapport lol

    Désolé

  2. #22
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Ylias
    Je ne comprends pas le rapport lol
    Tu chreches bien à dérouter des fonctions standard ? C'est ce que je fais avec SYSALLOC. Quand j'inclus "ed/inc/sysalloc.h" dans un source C, les appels des fonctions standard
    • malloc()
    • calloc()
    • realloc()
    • free()
    sont remplacées par des macros du même non qui appellent des fonctions 'à moi'.

    (Il se trouve qu'ensuite, elles appellent les vrais fonctions, parce que j'en ai besoin, mais rien ne t'y oblige).

  3. #23
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 149
    Par défaut
    Oui, mais tu spécifie le nom du .h dans le code source de ton executable...

    Alors que moi, lorsqu'un executable est déja compilé avec le .h de stdlib, il doit quand meme utiliser mes fonctions sans recompiler le programme...

  4. #24
    Membre chevronné Avatar de Jack_serious
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    350
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 350
    Par défaut
    Citation Envoyé par Ylias
    Sa ne donne rien ...

    JJ'ai fait le export à la main après avoir fait la compilation dynamique...

    Mais en fait, ça ne marche pas, il utilise tjs la fonction malloc de stdlib...
    Fichtre... etrange.

    Une des choses qui peut provoquer ce genre de choses:

    Comment fait tu ton LD_PRELOAD ?

    Il faut specifier le chemin absolu de la librairie.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $ export LD_PRELOAD='/home/oam/prog/c_rocks/my_lib.so'
    Sinon pour eviter de le faire il y a une autre variable d'envirronement a exporter.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $ export LD_PATH='.'
    $ export LD_PRELOAD='my_lib.so'
    LD_PATH sous Linux. LD_LIBRARY_PATH sous Unix.

    A part ca je vois pas...

    Tu pourrais faire voir la sortie de ton shell ?

    Sinon va demander sur le forum "Developpement Linux" c'est plein de barbus.

  5. #25
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Ylias
    Oui, mais tu spécifie le nom du .h dans le code source de ton executable...

    Alors que moi, lorsqu'un executable est déja compilé avec le .h de stdlib, il doit quand meme utiliser mes fonctions sans recompiler le programme...
    Comme je te l'ai dit, c'est une autre stratégie. Au moins, elle fonctionne !

  6. #26
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 149
    Par défaut
    Oui, mais hélas ça ne réponds pas à ce que je dois faire...
    Mais merci quand meme.

    J'ai bien spécifié le chemin complet pr accéder au .so.

    Et un set m'affiche bien la variable avec la bonne valeur...

    Et quand je lance mon programme, ça me lance le malloc normal...

    La manip que j'ai faite est la bonne vu que j'ai réussi sur un simple exemple....

    Cependant la compilation en libraire dynamique prends elle en compte ce type de déf:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    # ifdef MONALLOC
    # define malloc(x) monalloc(x, __FILE__, __LINE__)
    # define free(x) monfree(x, __FILE__, __LINE__)
    # define calloc(x, y) moncalloc(x, y, __FILE__, __LINE__)
    # define realloc(x, y) monrealloc(x, y, __FILE__, __LINE__)
    # endif
    Peut etre que le problème vient de là...

    J'ai tenté de nommer directement mes fonctions comme celle de stdlib mais il me dit que je peux pas vu que je fais un include stdlib.h...

    Je tourne en rond la

  7. #27
    Membre confirmé
    Inscrit en
    Mai 2005
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 149
    Par défaut
    J'ai résolu pas mal de soucis.
    Quelqu'un peut m'aider pour gérer le make load qui chargerait directement la bibliothèque dynamique?

    Merci.

    J'ai du mal à gérer le dossier courant pour la commande
    export LD_PRELOAD='/home/...../libmalloc.so'

    Je n'y arrive pas

    Merci

  8. #28
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Ylias
    Quelqu'un peut m'aider pour gérer le make load qui chargerait directement la bibliothèque dynamique?

    J'ai du mal à gérer le dossier courant pour la commande
    export LD_PRELOAD='/home/...../libmalloc.so'
    Quel rapport avec le langage C ?

    Linux & Développement pour Linux

Discussions similaires

  1. Chargement dynamique de code
    Par pouic06 dans le forum jQuery
    Réponses: 1
    Dernier message: 11/12/2013, 11h37
  2. [jar]chargement dynamique.
    Par Teddy-htk dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 27/04/2006, 15h19
  3. Problème mémoire avec une dll par chargement dynamique
    Par widze19 dans le forum C++Builder
    Réponses: 6
    Dernier message: 15/12/2003, 13h20
  4. Dll a chargement dynamique
    Par delire8 dans le forum C++Builder
    Réponses: 7
    Dernier message: 05/06/2003, 22h47
  5. Chargement dynamique de DLL sous Unix
    Par Willou dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 18/12/2002, 18h25

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