oups j'ai oublié le pas...
Je ne comprends pas le rapport lol
Désolé
Version imprimable
oups j'ai oublié le pas...
Je ne comprends pas le rapport lol
Désolé
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 standardCitation:
Envoyé par Ylias
sont remplacées par des macros du même non qui appellent des fonctions 'à moi'.
- malloc()
- calloc()
- realloc()
- free()
(Il se trouve qu'ensuite, elles appellent les vrais fonctions, parce que j'en ai besoin, mais rien ne t'y oblige).
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...
Fichtre... etrange.Citation:
Envoyé par Ylias
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.
Sinon pour eviter de le faire il y a une autre variable d'envirronement a exporter.Code:
1
2 $ export LD_PRELOAD='/home/oam/prog/c_rocks/my_lib.so'
LD_PATH sous Linux. LD_LIBRARY_PATH sous Unix.Code:
1
2
3 $ export LD_PATH='.' $ export LD_PRELOAD='my_lib.so'
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.
Comme je te l'ai dit, c'est une autre stratégie. Au moins, elle fonctionne !Citation:
Envoyé par Ylias
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:
Peut etre que le problème vient de là...Code:
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
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 :cry:
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
Quel rapport avec le langage C ?Citation:
Envoyé par Ylias
Linux & Développement pour Linux