Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1622 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  ld - relocation error : referenced symbol not found

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

ld - relocation error : referenced symbol not found

n°1761387
kaloskagat​os
Posté le 18-07-2008 à 12:06:48  profilanswer
 

:hello:
 
 
Je suis une quiche en édition des liens, j'aurais besoin de votre aide...
 
J'ai une appli graphique qui fonctionne bien. Certaines fonctions sont wrappées en python pour pouvoir piloter l'appli depuis un script python. Lors de l'exécution depuis python j'ai un message d'erreur, patapay c'est sous Sun:
pyQVUI est mon interface avec mon appli.
 
 
  >>>>python screenSave.py  
Traceback (most recent call last):
  File "screenSave.py", line 10, in ?
    from pyQVUI import *
  File "/home/st14972/dev/dev_SunOS5.8_64/lib/python/pyQVUI.py", line 5, in ?
    import _pyQVUI
ImportError: ld.so.1: python: fatal: relocation error: file /home/st14972/dev/dev_SunOS5.8_64/lib/_pyQVUI.so: symbol __1cDstdNbasic_istream4Ccn0ALchar_traits4Cc___Funget6M_r1_: referenced symbol not found
 
 
 
 
ldd de _pyQVUI.so :
 

       libQUICKVIEW.so =>       /home/st14972/dev/./dev_SunOS5.8_64/lib/libQUICKVIEW.so
        libVRML.so =>    /home/st14972/dev/./dev_SunOS5.8_64/lib/libVRML.so
        libFX.so =>      /home/st14972/dev/./dev_SunOS5.8_64/lib/libFX.so
        libSTREAMS.so =>         /home/st14972/dev/./dev_SunOS5.8_64/lib/libSTREAMS.so
        libSMAUG.so =>   /home/st14972/dev/./dev_SunOS5.8_64/lib/libSMAUG.so
        libREADER.so =>  /home/st14972/dev/./dev_SunOS5.8_64/lib/libREADER.so
        libNS.so =>      /home/st14972/dev/./dev_SunOS5.8_64/lib/libNS.so
        libUIL.so =>     /home/st14972/dev/./dev_SunOS5.8_64/lib/libUIL.so
        libGL.so.1 =>    /usr/lib/sparcv9/libGL.so.1
        libGLU.so.1 =>   /usr/lib/sparcv9/libGLU.so.1
        libGLw.so.1 =>   /usr/lib/sparcv9/libGLw.so.1
        libdl.so.1 =>    /usr/lib/sparcv9/libdl.so.1
        libX11.so.4 =>   /usr/lib/sparcv9/libX11.so.4
        libXm.so.4 =>    /usr/lib/sparcv9/libXm.so.4
        libXt.so.4 =>    /usr/lib/sparcv9/libXt.so.4
        libXext.so.0 =>  /usr/lib/sparcv9/libXext.so.0
        libXmu.so.4 =>   /usr/lib/sparcv9/libXmu.so.4
        libMrm.so.4 =>   /usr/lib/sparcv9/libMrm.so.4
        libpython2.4.so.1.0 =>   /home/egat/tools/pythonpack.2.3/local.SunOS.Generic_117350-08_64/lib/libpython2.4.so.1.0
        libtcl.so =>     /home/egat/tools/pythonpack.2.3/local.SunOS.Generic_117350-08_64/lib/libtcl.so
        libtk8.4.so =>   /home/egat/tools/pythonpack.2.3/local.SunOS.Generic_117350-08_64/lib/libtk8.4.so
        libresolv.so.2 =>        /usr/lib/sparcv9/libresolv.so.2
        libCVU.so =>     /vobs/aer/quickview/dev/dev_SunOS5.8_64/data/sftvqvui/qvfile/SLIB//libCVU.so
        libqual.so =>    /home/st14972/dev/./dev_SunOS5.8_64/lib/libqual.so
        libfutil.so =>   /home/st14972/dev/./dev_SunOS5.8_64/lib/libfutil.so
        libmoda.so =>    /home/st14972/dev/./dev_SunOS5.8_64/lib/libmoda.so
        libdrago.so =>   /home/st14972/dev/./dev_SunOS5.8_64/lib/libdrago.so
        libdamas.so =>   /home/st14972/dev/./dev_SunOS5.8_64/lib/libdamas.so
        liberrare.so =>  /home/st14972/dev/./dev_SunOS5.8_64/lib/liberrare.so
        libsda.so =>     /home/st14972/dev/./dev_SunOS5.8_64/lib/libsda.so
        libmutil.so =>   /home/st14972/dev/./dev_SunOS5.8_64/lib/libmutil.so
        libm.so.1 =>     /usr/lib/sparcv9/libm.so.1
        libF77.so.4 =>   /opt/SUNWspro/lib/v9/libF77.so.4
        libsunmath.so.1 =>       /opt/SUNWspro/lib/v9/libsunmath.so.1
        libM77.so.2 =>   /opt/SUNWspro/lib/v9/libM77.so.2
        libfsu.so.1 =>   /opt/SUNWspro/lib/v9/libfsu.so.1
        libl.so.1 =>     /usr/lib/sparcv9/libl.so.1
        libpthread.so.1 =>       /usr/lib/sparcv9/libpthread.so.1
        libxnet.so =>    /usr/lib/sparcv9/libxnet.so
        libnsl.so.1 =>   /usr/lib/sparcv9/libnsl.so.1
        libsocket.so.1 =>        /usr/lib/sparcv9/libsocket.so.1
        libCrun.so.1 =>  /usr/lib/sparcv9/libCrun.so.1
        libdga.so.1 =>   /usr/openwin/lib/sparcv9/libdga.so.1
        libc.so.1 =>     /usr/lib/64/libc.so.1
        libintl.so.1 =>  /usr/lib/64/libintl.so.1
        libSM.so.6 =>    /usr/openwin/lib/sparcv9/libSM.so.6
        libICE.so.6 =>   /usr/openwin/lib/sparcv9/libICE.so.6
        librt.so.1 =>    /usr/lib/64/librt.so.1
        libgcc_s.so.1 =>         /home/egat/tools/gccpack.1.1/local.SunOS.Generic_117350-08/lib/sparcv9/libgcc_s.so.1
        libmp.so.2 =>    /usr/lib/64/libmp.so.2
        libaio.so.1 =>   /usr/lib/64/libaio.so.1
        libthread.so.1 =>        /usr/lib/64/libthread.so.1
        /usr/platform/SUNW,Sun-Blade-1000/lib/sparcv9/libc_psr.so.1


 
 
Où est-ce que je peux trouver le symbole manquant (__1cDstdNbasic_istream4Ccn0ALchar_traits4Cc___Funget6M_r1_)?  
 
J'utilise aCC pour compiler. (patapay)


Message édité par Elmoricq le 21-07-2008 à 10:32:37

---------------
« Le hasard, c’est différent de la chance. Parce que la chance, je n'en ai jamais. »
mood
Publicité
Posté le 18-07-2008 à 12:06:48  profilanswer
 

n°1762350
kaloskagat​os
Posté le 21-07-2008 à 10:21:44  profilanswer
 

up :)


---------------
« Le hasard, c’est différent de la chance. Parce que la chance, je n'en ai jamais. »
n°1762408
kaloskagat​os
Posté le 21-07-2008 à 11:28:35  profilanswer
 


J'ai vu que mon post a été déplacé dans la catégorie python, pas de souci.
 
Je veux juste souligner que bien que je parle de wrapping python les développeurs C peuvent surement m'aider car avec le code C généré par swig je crée une lib dynamique avec mon compilateur C, et le import depuis python révèle juste un problème avec le ld, j'ai donc mal fait mon link après la compilation.


---------------
« Le hasard, c’est différent de la chance. Parce que la chance, je n'en ai jamais. »
n°1762410
Taz
bisounours-codeur
Posté le 21-07-2008 à 11:30:08  profilanswer
 

problème de version d'ABI.
Fait un nm /path/to/lib et grep dedans ton symbole manquant.
Après avec nm -C tu peux le dé-mangler pour savoir à quoi ça correspond comme fonction.
 
Est-ce que cette lib elle est à toi, genre style c'est toi qui l'a compilé ?

n°1762412
Taz
bisounours-codeur
Posté le 21-07-2008 à 11:30:55  profilanswer
 

c'est du C++ ce code :o

n°1762420
FrigoAcide
Posté le 21-07-2008 à 11:39:26  profilanswer
 

J'y connais rien en Python, mais si y'a du C++ derrière, je te conseillerais de regarder les includes dans les fichiers sources.
 
Genre #include <string>, #include <iostream>...
 
Si tu trouves du #include "string.h" par exemple, essaye de le remplacer par un <string>
 
Après là comme ça, je peux pas vraiment t'aider, en voyant __1cDstdNbasic_istream4Ccn0ALchar_traits4Cc___Funget6M_r1_, on a l'impression qu'il manque la librairie istream, qui devrait être linkée automatiquement quand tu fais un #include <istream> (ou iostream) dans ton code...


---------------
Paléoanthropologie, évolution de l'espèce humaine et préhistoire
n°1762421
kaloskagat​os
Posté le 21-07-2008 à 11:40:01  profilanswer
 

c'est un peu comme si je faisais une prière et que Dieu mettait un [:drapo] dans ma prière [:alphat]  
D'ailleurs avant de me coucher hier j'ai pensé à demangle, un MP de Dieu probablement.  
Je sais que c'est du C++, mais ça faisait deux caractère à écrire en plus :o
 
Comment tu sais que c'est un problème d'ABI? Est-ce que ça veut dire qu'une lib va chercher du 32bits au lieu de 64?  
 
Est-ce que choisir Abby c'est un hasard?


---------------
« Le hasard, c’est différent de la chance. Parce que la chance, je n'en ai jamais. »
n°1762422
Elmoricq
Modérateur
Posté le 21-07-2008 à 11:40:36  profilanswer
 

Oops, j'ai lu en diagonale. :o

 

Je remets dans C++.


Message édité par Elmoricq le 21-07-2008 à 11:40:56
n°1762425
kaloskagat​os
Posté le 21-07-2008 à 11:43:27  profilanswer
 

FrigoAcide a écrit :

J'y connais rien en Python, mais si y'a du C++ derrière, je te conseillerais de regarder les includes dans les fichiers sources.
 
Genre #include <string>, #include <iostream>...
 
Si tu trouves du #include "string.h" par exemple, essaye de le remplacer par un <string>
 
Après là comme ça, je peux pas vraiment t'aider, en voyant __1cDstdNbasic_istream4Ccn0ALchar_traits4Cc___Funget6M_r1_, on a l'impression qu'il manque la librairie istream, qui devrait être linkée automatiquement quand tu fais un #include <istream> (ou iostream) dans ton code...


 
 
Ca compile sans problème, je cherche effectivement la lib qui contient mon symbole not found


---------------
« Le hasard, c’est différent de la chance. Parce que la chance, je n'en ai jamais. »
n°1762426
kaloskagat​os
Posté le 21-07-2008 à 11:45:13  profilanswer
 

Taz a écrit :

problème de version d'ABI.
Fait un nm /path/to/lib et grep dedans ton symbole manquant.
Après avec nm -C tu peux le dé-mangler pour savoir à quoi ça correspond comme fonction.
 
Est-ce que cette lib elle est à toi, genre style c'est toi qui l'a compilé ?


 
 
c'est bien moi qui l'ai compilée au fait.
 


---------------
« Le hasard, c’est différent de la chance. Parce que la chance, je n'en ai jamais. »
mood
Publicité
Posté le 21-07-2008 à 11:45:13  profilanswer
 

n°1762439
kaloskagat​os
Posté le 21-07-2008 à 11:54:25  profilanswer
 

le -C marche pas, ni --demangle, j'échoue
nm -C /home/st14972/dev/dev_SunOS5.8_64/lib/_pyQVUI.so | grep unget
                 U __1cDstdNbasic_istream4Ccn0ALchar_traits4Cc___Funget6M_r1_


---------------
« Le hasard, c’est différent de la chance. Parce que la chance, je n'en ai jamais. »
n°1762445
Elmoricq
Modérateur
Posté le 21-07-2008 à 11:58:06  profilanswer
 

T'es sous Sun, c'est ça ?
Regarde si t'as pas un nm sous /usr/xpg4/bin ou /usr/ccs/bin, c'est pas le même que par défaut et il prend l'option -C celui-là.

n°1762448
kaloskagat​os
Posté le 21-07-2008 à 12:04:13  profilanswer
 

Elmoricq a écrit :

T'es sous Sun, c'est ça ?
Regarde si t'as pas un nm sous /usr/xpg4/bin ou /usr/ccs/bin, c'est pas le même que par défaut et il prend l'option -C celui-là.


 
 
Merci,
 
/usr/ccs/bin/nm -C /home/st14972/dev/dev_SunOS5.8_64/lib/_pyQVUI.so | grep unget  
[11104] |             0|           0|FUNC |GLOB |0    |UNDEF  |std::basic_istream<char,std::char_traits<char> >&std::basic_istream<char,std::char_traits<char> >::unget()
                                                       [__1cDstdNbasic_istream4Ccn0ALchar_traits4Cc___Funget6M_r1_]
 
 
effectivement mon PATH est pollué par un pack gcc qui amène des lib et des outils à la con. Mais je crois qu'il est nécessaire pour l'utilisation du python que je dois utiliser. Je vais essayer de le virer de mon environnent.  


---------------
« Le hasard, c’est différent de la chance. Parce que la chance, je n'en ai jamais. »
n°1762491
Taz
bisounours-codeur
Posté le 21-07-2008 à 12:54:33  profilanswer
 

C'est Abby NCIS.

n°1762549
kaloskagat​os
Posté le 21-07-2008 à 14:28:52  profilanswer
 

je capte pas d'où vient cette méthode unget(), si seulement j'arrivais à trouver où je l'appelle...


---------------
« Le hasard, c’est différent de la chance. Parce que la chance, je n'en ai jamais. »
n°1762813
Taz
bisounours-codeur
Posté le 21-07-2008 à 22:05:01  profilanswer
 

elle sort probablement d'une méthode template ou inlinée si ça vient pas de toi.

n°1762817
kaloskagat​os
Posté le 21-07-2008 à 22:14:52  profilanswer
 

elle est pas dans ma version linux ça aussi je capte pas :fou:
 
Sinon elle est defined dans le nm du binaire de mon appli :
 
python : import _pyQVUI
_pyQVUI.so (interface de wrapping avec l'appli) -> unget Undefined
appli -> unget Defined
 
Le symbole devrait pas être résolu à l'import?


---------------
« Le hasard, c’est différent de la chance. Parce que la chance, je n'en ai jamais. »
n°1762820
Taz
bisounours-codeur
Posté le 21-07-2008 à 22:30:04  profilanswer
 

bah si c'est ce qui se passe, sauf que ça trouve pas. A part comparer les lib utilisées, je vois pas trop. Dans ton appli, le symbole est à résoudre ou bien il est défini ?
 
acc c'est bien, mais est-ce que ça a la même ABI que gcc ? (vu que tu pull libgcc)

n°1762822
kaloskagat​os
Posté le 21-07-2008 à 22:43:54  profilanswer
 

dans l'appli il est à résoudre, même il est pas pas utilisé, j'ai fait des grep unget partout et je trouve rien, j'ai même pas de ifstream...  
 
je sais pas comment on vérifie le type? version? d'ABI, je sais juste que la variable d'environnement ABI=64 quand on st en 64 bits et pas définie quand on est en 32.


---------------
« Le hasard, c’est différent de la chance. Parce que la chance, je n'en ai jamais. »
n°1762830
Gf4x3443
Killing perfection
Posté le 22-07-2008 à 00:18:41  profilanswer
 

Très fatigué, mais en passant et en lecture diagonale, si je dis pas trop de conneries:

 
kaloskagatos a écrit :

dans l'appli il est à résoudre, même il est pas pas utilisé, j'ai fait des grep unget partout et je trouve rien, j'ai même pas de ifstream...

 

Ca fait quelque temps que j'ai pas joué à faire des libs python, mais est-ce qu'il ne chercherait à résoudre certains symboles, même s'ils ne sont jamais appelés, lors de l'import?

 
kaloskagatos a écrit :


je sais pas comment on vérifie le type? version? d'ABI, je sais juste que la variable d'environnement ABI=64 quand on st en 64 bits et pas définie quand on est en 32.

 

Est-ce que tu peux donner les headers de ta lib et de ton appli? Genre objdump -p?

 
Spoiler :

Au fait, avec /home/$USER dans ce genre, tu travaillerais pas dans le coin de St Martin?  [:cupra]


Message édité par Gf4x3443 le 22-07-2008 à 00:20:25
n°1762832
kaloskagat​os
Posté le 22-07-2008 à 00:28:15  profilanswer
 

Je te donne ça demain, quand je pourrai passer le firewall de Saint-Martin [:ddr555]


Message édité par kaloskagatos le 22-07-2008 à 00:28:22

---------------
« Le hasard, c’est différent de la chance. Parce que la chance, je n'en ai jamais. »
n°1762869
Taz
bisounours-codeur
Posté le 22-07-2008 à 09:00:10  profilanswer
 

t'as un gnuld ou pas ? (--as-needed)

 

si tu rajoutes un main à ton wrapper, il s'exécute ok ?

 

( http://udrepper.livejournal.com/8790.html article sympa sur comment faire des bonnes tartes)


Message édité par Taz le 22-07-2008 à 09:00:25
n°1762932
kaloskagat​os
Posté le 22-07-2008 à 10:47:44  profilanswer
 

kaloskagatos a écrit :

dans l'appli il est à résoudre, même il est pas pas utilisé, j'ai fait des grep unget partout et je trouve rien, j'ai même pas de ifstream...  
 
je sais pas comment on vérifie le type? version? d'ABI, je sais juste que la variable d'environnement ABI=64 quand on st en 64 bits et pas définie quand on est en 32.


 
 
un peu endormi hier soir, dans l'appli le symbole est défini, mais pas dans le wrapper


Message édité par kaloskagatos le 22-07-2008 à 10:48:18

---------------
« Le hasard, c’est différent de la chance. Parce que la chance, je n'en ai jamais. »
n°1763207
Taz
bisounours-codeur
Posté le 22-07-2008 à 14:57:15  profilanswer
 

si dans l'appli t'arrives à localiser dans quelle unité de compilation il est défini, ça pourrait te tuyauter un peu, non ?
 
tu fais des nm sur .o et tu cherches :)

n°1763344
kaloskagat​os
Posté le 22-07-2008 à 18:38:24  profilanswer
 

j'ai trouvé qu'en fait c'est une fucking lib à laquelle je me link statiquement mais avec un -lfukinglib donc je croyais que j'avais que des lib dynamiques. Le problème serait donc que cette lib a été compilée avec un compilo différent du mien et que cette méthode unget est obsolète par exemple?


---------------
« Le hasard, c’est différent de la chance. Parce que la chance, je n'en ai jamais. »
n°1763351
kaloskagat​os
Posté le 22-07-2008 à 19:03:39  profilanswer
 

question bête: y'a pas moyen de demander à python de pas chercher à résoudre tous les symboles à l'import de mon module wrappé?


---------------
« Le hasard, c’est différent de la chance. Parce que la chance, je n'en ai jamais. »
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  ld - relocation error : referenced symbol not found

 

Sujets relatifs
[JSF]erreur No Converter for type java.util.Date foundDatabase Error
GDB : (no debugging symbols found ) . "-g" dans le Makefile.[ASP] Probleme d'acès à un fichier sur "https" msxml3.dll error '800c0
[Eclipse] "An out of memory error has occured". Un flutiste en cadeau.500 Internal Server Error lors d'une erreur PHP
Fatal error: Call to undefined function obdc_do()Friend declaration error dans une classe Set
[c#]Winform et évennement error ?[MySQL] Error : 2013 C'est quoi ça ? [Resolu]
Plus de sujets relatifs à : ld - relocation error : referenced symbol not found


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR