Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
C++ problème de lien avec la librairie STL
Envoyé par: fabris

Bonjour,

Le make d'un ancien projet C++ - qui se déroulait paisiblement voici un an ou deux, avec avec les versions des logiciels de développement de l'époque - avait déjà bien mal commencé.
Mais Fanch m'a dépanné sur ce même forum : il a fallu ajouter -I /usr/include/stlport pour g++ -> même plus un Warning, super !

Maintenant, arrivé au lien, il apparaît que les fonctions internes de STL ne sont plus accessibles :
g++ -O3 -I /usr/include/stlport -lreadline -lstlport -o k cvtChar.o readline.o input.o Form.o Overload.o read.o eval.o print.o banner.o repl.o keywords.o
cvtChar.o: In function `escape(char)':
cvtChar.c++sad smiley.text+0x53c): undefined reference to `stlpmtx_std::__node_alloc::_M_dealloc
ate(void*, unsigned int)'
et 200 pages d'insultes comme ça...

et là, j'ai même ajouté -lstlport, alors qu'autrefois, l'exécutable était généré silencieusement.
Mais c'était il y a plus d'un an sur une debian Sarge.
Maintenant, c'est une Sid sur laquelle les paquetages :
libstlport4.6c2
libstlport5.1
libstlport5.1-dev

sont installés.

Déjà merci si vous avez lu jusque-là !

Fabrice

Poste le Sunday 16 December 2007 11:30:44
Répondre     Citer    
Re: C++ problème de lien avec la librairie STL
Envoyé par: fabris

En tapant :
nm cvtChar.o
...
00000070 T _Z8unescapec
U _ZN11stlpmtx_std12__node_alloc11_M_allocateERj
U _ZN11stlpmtx_std12__node_alloc13_M_deallocateEPvj
00000000 W _ZN11stlpmtx_std12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj
00000000 W _ZN11stlpmtx_std12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1EPKcRKS4_
U _ZN11stlpmtx_std24__stl_throw_length_errorEPKc
00000000 W ...[/i]

On constate qu'on référence des choses avec stlpmtx_std.

Mais alors, on devrait retrouver ce nom dans la librairie stl_port qui en contient - la dbg - :

nm /usr/lib/debug/usr/lib/libstlport.so.5.1.4 |grep stlpmtx_std
-> pas de trace du stlpmtx_std ...
Je ne comprends pas...

Poste le Sunday 16 December 2007 14:47:32
Répondre     Citer    
Re: C++ problème de lien avec la librairie STL
Envoyé par: fabris

C'est bon, comme d'hab. j'ai rien compris mais ça a fini par marcher.
Si ça intéresse quelqu'un de savoir comment :
j'ai viré tous les stlport5.1 pour repasser au 4.6 et spécifié "de force" ( comme un .o) la librairie à utiliser :
g++ -O3 -I /usr/include/stlport -lreadline -o k /usr/lib/libstlport_gcc.so cvtChar.o readline.o input.o Form.o Overload.o read.o eval.o print.o banner.o repl.o keywords.o

Affreux, n'est-ce pas ? Mais pas grave, le programme étant destiné à être traduit en OCaml, language bien meilleur que le C++ et très agréable...

Faites comme moi, abandonnez le C++ !
[caml.inria.fr]

Poste le Sunday 16 December 2007 15:58:52
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
C++ problème de lien avec la librairie STL
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons