Cygwin n'aime pas std on dirait...
Résolu
@xi@g@me
Messages postés
67
Date d'inscription
Statut
Membre
Dernière intervention
-
@xi@g@me Messages postés 67 Date d'inscription Statut Membre Dernière intervention -
@xi@g@me Messages postés 67 Date d'inscription Statut Membre Dernière intervention -
Bonjour tout le monde,
J'ai un gros souci avec cygwin, et malgré des recherches approfondies je ne trouve aucune solution...
Je suis en train de faire un module en C++ pour utiliser sous ruby pour mon stage (j'utilise donc swigwin).
En compilant le fichier C++ avec un main dedans, tout fonctionne. Mais quand j'essaye de compiler pour en faire un module pour ruby (je crée le wrapper avec swigwin, le makefile avec ruby) l'édition des liens foire violament :
undefined reference to _Rb_tree_increment par exemple
quelqu'un peut m'aider?
merci d'avance
J'ai un gros souci avec cygwin, et malgré des recherches approfondies je ne trouve aucune solution...
Je suis en train de faire un module en C++ pour utiliser sous ruby pour mon stage (j'utilise donc swigwin).
En compilant le fichier C++ avec un main dedans, tout fonctionne. Mais quand j'essaye de compiler pour en faire un module pour ruby (je crée le wrapper avec swigwin, le makefile avec ruby) l'édition des liens foire violament :
undefined reference to _Rb_tree_increment par exemple
quelqu'un peut m'aider?
merci d'avance
A voir également:
- Cygwin n'aime pas std on dirait...
- Cygwin - Télécharger - Édition & Programmation
- On dirait que xhamster ne fonctionne pas pour toi ✓ - Forum Réseaux sociaux
- Je n'arrive pas a ouvrir certain site ? - Forum Réseaux sociaux
- Désinstaller cygwin ✓ - Forum logiciel systeme
- Cygwin - Forum Windows
6 réponses
J'en ai un peu plus sur le problème:
les références non trouvées sont:
_Rb_tree_increment 2 fois
_Rb_tree_insert_and_rebalance 1 fois
_Rb_tree_decrement 2 fois
et aussi
std::ios_base::Init::Init() 1 fois
std::ios_base::Init::~Init() 1 fois
les références non trouvées sont:
_Rb_tree_increment 2 fois
_Rb_tree_insert_and_rebalance 1 fois
_Rb_tree_decrement 2 fois
et aussi
std::ios_base::Init::Init() 1 fois
std::ios_base::Init::~Init() 1 fois
voici le fichier de sortie de la compilation : des idées?
g++ -I. -I/usr/lib/ruby/1.8/i386-cygwin -I/usr/lib/ruby/1.8/i386-cygwin -I. -g -O2 -c helloworld_wrap.cxx gcc -shared -s -Ixml2/include -I/usr/include -I/usr/local/include -Lxml2/bin -lsbml -lxml2 -lm -L/usr/lib -L/usr/local/lib -o helloworld.so helloworld_wrap.o helloworld.o -L"." -L"/usr/lib" -L. -Wl,--enable-auto-image-base,--enable-auto-import,--export-all -lruby -lsupc++ -ldl -lcrypt helloworld.o: In function `_ZNSt8multimapIiiSt4lessIiESaISt4pairIKiiEEED1Ev': /home/mathieu/ASDABP/helloworld.cpp:(.text+0xd): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size() const' /home/mathieu/ASDABP/helloworld.cpp:(.text+0x60): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator[](unsigned int) const' /home/mathieu/ASDABP/helloworld.cpp:(.text+0x9f): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator[](unsigned int) const' /home/mathieu/ASDABP/helloworld.cpp:(.text+0xce): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator[](unsigned int) const' helloworld.o: In function `main': /home/mathieu/ASDABP/helloworld.cpp:656: undefined reference to `_readSBML' /home/mathieu/ASDABP/helloworld.cpp:658: undefined reference to `SBMLDocument::getNumErrors() const' /home/mathieu/ASDABP/helloworld.cpp:662: undefined reference to `std::cerr' /home/mathieu/ASDABP/helloworld.cpp:662: undefined reference to `SBMLDocument::printErrors(std::basic_ostream<char, std::char_traits<char> >&) const' helloworld.o: In function `_Z41__static_initialization_and_destruction_0ii': /usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/iostream:77: undefined reference to `std::ios_base::Init::Init()' /usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/iostream:77: undefined reference to `std::ios_base::Init::~Init()' helloworld.o: In function `_ZNSt8multimapIiiSt4lessIiESaISt4pairIKiiEEED1Ev': /home/mathieu/ASDABP/helloworld.cpp:(.text$_ZNSt17_Rb_tree_iteratorISt4pairIK8Node_key4NodeEEppEi[std::_Rb_tree_iterator<std::pair<Node_key const, Node> >::operator++(int)]+0x1b): undefined reference to `std::_Rb_tree_increment(std::_Rb_tree_node_base*)' /home/mathieu/ASDABP/helloworld.cpp:(.text$_ZNSt17_Rb_tree_iteratorISt4pairIK8Node_key4NodeEEppEv[std::_Rb_tree_iterator<std::pair<Node_key const, Node> >::operator++()]+0x13): undefined reference to `std::_Rb_tree_increment(std::_Rb_tree_node_base*)' helloworld.o: In function `_ZN10ExperimentC1Ev': /home/mathieu/ASDABP/helloworld.cpp:78: undefined reference to `std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)' helloworld.o: In function `_ZNSt8multimapIiiSt4lessIiESaISt4pairIKiiEEED1Ev': /home/mathieu/ASDABP/helloworld.cpp:(.text$_ZNSt17_Rb_tree_iteratorISt4pairIK8Node_key4NodeEEmmEv[std::_Rb_tree_iterator<std::pair<Node_key const, Node> >::operator--()]+0x13): undefined reference to `std::_Rb_tree_decrement(std::_Rb_tree_node_base*)' collect2: ld returned 1 exit status make: *** [helloworld.so] Error 1
essai d'utiliser g++ plutôt que gcc pour l'édition des liens.
tu ne met pas comment tu compile helloworld.cpp
est-tu sur que c'est comme ça que l'on fait une bibliothèque dynamique ? (regarde là : http://www.commentcamarche.net/forum/affich 1881407 comment creer librairie partagee so linux)
tu ne met pas comment tu compile helloworld.cpp
est-tu sur que c'est comme ça que l'on fait une bibliothèque dynamique ? (regarde là : http://www.commentcamarche.net/forum/affich 1881407 comment creer librairie partagee so linux)
salut char snipeur, ca fait plaisir d'avoir enfin une réponse...
helloworld.cpp est compilé de la même manière mais n'était pas modifié quand j'ai recompilé, d'où son absence...
en fait, le makefile est généré par ruby, et le helloworld_wrap.cpp par swigwin, car le but de la librairie est d'être utilisée par ruby. j'ai config ruby pour générer des commandes pour C++ (j'ai réussi a compiler un bon paquet de fois déjà avant qu'il foire comme ca), et les drapeaux en plus dans le gcc -shared comme par exemple "-L/usr/local/bin" on été rajoutés par un petit programme que j'ai créé a la main.
Je vais jeter un coup d'oeil sur le lien mais le makefile étant trop compliqué je doute pouvoir le modifier d'avantage a la main...
helloworld.cpp est compilé de la même manière mais n'était pas modifié quand j'ai recompilé, d'où son absence...
en fait, le makefile est généré par ruby, et le helloworld_wrap.cpp par swigwin, car le but de la librairie est d'être utilisée par ruby. j'ai config ruby pour générer des commandes pour C++ (j'ai réussi a compiler un bon paquet de fois déjà avant qu'il foire comme ca), et les drapeaux en plus dans le gcc -shared comme par exemple "-L/usr/local/bin" on été rajoutés par un petit programme que j'ai créé a la main.
Je vais jeter un coup d'oeil sur le lien mais le makefile étant trop compliqué je doute pouvoir le modifier d'avantage a la main...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bon, déjà, le problème ne viens que de l'édition des liens. Et en effet il ne semble pas trouver la lib standard du C++.
Dans le man gcc, je n'ai pas trouver l'option "-s", que "-S" qui n'assemble pas le code : cause possible de l'erreur ?
Fait une recherche sur ton disque dur pour savoir où se trouve les "libstdc++.*" Peut être manque t'elles.
Dans le man gcc, je n'ai pas trouver l'option "-s", que "-S" qui n'assemble pas le code : cause possible de l'erreur ?
Fait une recherche sur ton disque dur pour savoir où se trouve les "libstdc++.*" Peut être manque t'elles.
salut char snipeur, il semblerait en effet que le manque de libc++ soit la cause du problème. j'ai regardé le extconf.rb qui permet de faire le makefile, et en argument de la fonction append_library il y avait supc++. Je l'ai remplacé par stdc++ et cela semble marcher.
il me reste les erreurs de SBML à corriger... (les headers et les libs existent car j'arrive a compiler quand je ne fais pas de lib dynamique pour ruby)
merci encore du tuyau :)
il me reste les erreurs de SBML à corriger... (les headers et les libs existent car j'arrive a compiler quand je ne fais pas de lib dynamique pour ruby)
helloworld.o: In function `main': /home/mathieu/ASDABP/helloworld.cpp:1042: undefined reference to `_readSBML' /home/mathieu/ASDABP/helloworld.cpp:1043: undefined reference to `SBMLDocument::getNumErrors() const' /home/mathieu/ASDABP/helloworld.cpp:1045: undefined reference to `SBMLDocument::printErrors(std::basic_ostream<char, std::char_traits<char> >&) const' collect2: ld returned 1 exit status make: *** [helloworld.so] Error 1
merci encore du tuyau :)