Quelle version de g++ sur Linux

Salut 4ian,

Je voudrais savoir quelle version de g++ tu utilises sur Linux pour compiler Game Develop (et surtout wxwidgets) car j’obtiens pas mal d’erreurs : sur mon PC Ubuntu, j’ai recompilé wxwidgets 2.9.5 en unicode avec g++ 4.7 et j’obtiens cette erreur au démarrage de Game Develop :

relocation error: ./libGDCore.so: symbol wxEVT_LIST_ITEM_RIGHT_CLICK, version WXU_2.9 not defined in file libwx_gtk2u_core-2.9.so.5 with link time reference

EDIT : En regardant la table des symboles de libwx_gtk2u_core-2.9.so.5, j’ai remarqué que les symboles wxEVT_LIST_ITEM sont manquants dans mes .so compilés alors qu’ils sont bien présents dans le .so à côté de GD.

EDIT 2 : Serait-il possible de remettre à disposition l’archive wxwidgetslinux.7z qui n’est plus disponible sur le site.

Ouaip c’est fait. Y a peut être une chance que l’erreur vienne d’une version datée de wxWidgets.

J’utilisais juste la même que pour Windows (recompilée).

Viens de tester, il n’y a plus ce genre d’erreurs. Par contre, GD plante dès qu’il tente d’afficher la fenêtre principale. Donc, je suppose que wxwidgets doit être compilée avec g++ 4.6 au lieu de 4.7.

Pourtant non ! ( gcc version 4.7.2 ) :slight_smile:
Est ce que tu peux utiliser gdb pour tracer le crash ?

Je compile avec g++ 4.7.3 sous Ubuntu 13.04. Dès que je lance GD (et que j’ai compilé wxwidgets avant), il plante :

Program received signal SIGABRT, Aborted. 0xb7fdd424 in __kernel_vsyscall () (gdb) bt #0 0xb7fdd424 in __kernel_vsyscall () #1 0xb68aab1f in raise () from /lib/i386-linux-gnu/libc.so.6 #2 0xb68ae0b3 in abort () from /lib/i386-linux-gnu/libc.so.6 #3 0xb68e7ab5 in ?? () from /lib/i386-linux-gnu/libc.so.6 #4 0xb68f27e2 in ?? () from /lib/i386-linux-gnu/libc.so.6 #5 0xb68f3530 in ?? () from /lib/i386-linux-gnu/libc.so.6 #6 0x080d9ba3 in wxString::~wxString() () #7 0x081039c9 in wxCommandEvent::~wxCommandEvent() () #8 0xb783209c in wxWindowBase::SendDestroyEvent() () from /usr/local/lib/libwx_gtk2u_core-2.9.so.5 #9 0xb76b1337 in wxTopLevelWindowGTK::~wxTopLevelWindowGTK() () from /usr/local/lib/libwx_gtk2u_core-2.9.so.5 #10 0xb7705731 in wxDialog::~wxDialog() () from /usr/local/lib/libwx_gtk2u_core-2.9.so.5 #11 0xb767a45a in wxMessageDialogBase::~wxMessageDialogBase() () from /usr/local/lib/libwx_gtk2u_core-2.9.so.5 #12 0xb7679332 in wxMessageBox(wxString const&, wxString const&, long, wxWindow*, int, int) () from /usr/local/lib/libwx_gtk2u_core-2.9.so.5 #13 0xb7864ed6 in wxLogGui::DoShowSingleLogMessage(wxString const&, wxString const&, int) () from /usr/local/lib/libwx_gtk2u_core-2.9.so.5 #14 0xb78675db in wxLogGui::Flush() () from /usr/local/lib/libwx_gtk2u_core-2.9.so.5 #15 0xb73b592f in wxLog::FlushActive() ()

GD n’est pas cencé aller chercher sa propre version de wxwidgets (du dossier de GD) ?

En fait, Game Develop prend les “dlls” que j’ai compilé en priorité au lieu de celles du dossier de Game Develop. Ce ne serait pas gênant si elles ne provoquaient pas un plantage de GD. Je suis obligé de changer le nom du dossier /usr/local/lib temporairement pour pouvoir lancer GD sans plantage. Malgré tout, les extensions que je compile marchent très bien sur GD (même si elles sont compilées avec les dlls de /usr/local/lib").

Oui, je me rappelle d’un problème du genre avec LLVM ( Quand GD utilisait clang à l’époque pour compiler ) : Les fonctions utilisées étaient celles de LLVM fournie par le système, et ça crashait donc violemment. ( Quel enfer cet histoire de dépendance ).
Le problème c’est qu’on ne peut pas y faire grand chose, à moins de trouver un moyen de forcer le système à utiliser uniquement ou du moins en priorité les .so contenus dans le répertoire. C’est l’utilité de LD_LIBRARY_PATH, mais ça ne semble pas influer sur la priorité de recherche… Quoique, regarde ici : askubuntu.com/questions/233943/h … brary-path

et donc modifier le script de lancement de GD pour ajouter le “.” à LD_LIBRARY_PATH en début et non pas à la fin.