Salut,
J'ai un écrit un code composé d'un exe et d'une lib dynamique qui fonctionne depuis un moment sans problème sur Linux et Windows. Je viens de recompiler l'ensemble avec gcc 4.4.5 et mon code ne fonctionne plus sur Linux. Après quelques investigations, je me rend compte que ma lib accède à une variable global de l'exe alors que je ne lui ai jamais demandé .
J'ai écris un petit exemple de quelques lignes pour mettre en évidence mon problème.
- Dans les 2 modules (exe et lib) je déclare une structure avec le même nom "g_test".
- Je compile les 2 modules avec -fPic et -shared pour la lib
Lorsque dans la lib je modifis "g_test" c'est le "g_test" de l'exécutable qui est modifié.
Bref le symbole est partagé par défaut ce qui me surprend énormément pour pas dire que ca m'inquiète...c'est la première fois que je rencontre un tel problème, est ce que quelqu'un peut m'éclairer ?
(Voir la pièce jointe "dlopen.tar.gz" pour reproduire le problème : faire un "make" puis lancer "./exedltest")
Merci d'avance
Rom1nux
Partager