Forum Programmation.c++ Problème édition de liens

Posté par (page perso) . Licence CC by-sa
Tags : aucun
0
5
jan.
2015

Salut,

j'ai un problème pour compiler dolphin-emu (depuis Ubunut ou Debian)

voici l'édition de liens :

/usr/bin/g++    -I/home/linuxconsole/opkg/include -I/CXXFLAGS -I/home/linuxconsole/x86_64/include -I/home/linuxconsole/x86_64/include -I/CXXFLAGS -I/home/linuxconsole/x86_64/include  -Wtype-limits -Wsign-compare -Wignored-qualifiers -Wuninitialized -Wlogical-op -Wshadow -Winit-self -fvisibility-inlines-hidden -fvisibility=hidden -pthread -O3 -DNDEBUG    -L/home/linuxconsole/opkg/lib  -L/home/linuxconsole/opkg/lib64  -Wl,-rpath-link,/home/linuxconsole/opkg/lib64 -Wl,-rpath-link,/home/linuxconsole/opkg/lib -L/home/linuxconsole/x86_64/lib  -L/home/linuxconsole/x86_64/lib64  -Wl,-rpath-link,/home/linuxconsole/x86_64/lib64 -Wl,-rpath-link,/home/linuxconsole/x86_64/lib -fopenmp CMakeFiles/dolphin-emu.dir/Src/ARCodeAddEdit.cpp.o CMakeFiles/dolphin-emu.dir/Src/AboutDolphin.cpp.o CMakeFiles/dolphin-emu.dir/Src/CheatsWindow.cpp.o CMakeFiles/dolphin-emu.dir/Src/ConfigMain.cpp.o CMakeFiles/dolphin-emu.dir/Src/Debugger/BreakpointDlg.cpp.o CMakeFiles/dolphin-emu.dir/Src/Debugger/BreakpointView.cpp.o CMakeFiles/dolphin-emu.dir/Src/Debugger/BreakpointWindow.cpp.o CMakeFiles/dolphin-emu.dir/Src/Debugger/CodeView.cpp.o CMakeFiles/dolphin-emu.dir/Src/Debugger/CodeWindow.cpp.o CMakeFiles/dolphin-emu.dir/Src/Debugger/CodeWindowFunctions.cpp.o CMakeFiles/dolphin-emu.dir/Src/Debugger/DSPDebugWindow.cpp.o CMakeFiles/dolphin-emu.dir/Src/Debugger/DSPRegisterView.cpp.o CMakeFiles/dolphin-emu.dir/Src/Debugger/DebuggerPanel.cpp.o CMakeFiles/dolphin-emu.dir/Src/Debugger/DebuggerUIUtil.cpp.o CMakeFiles/dolphin-emu.dir/Src/Debugger/JitWindow.cpp.o CMakeFiles/dolphin-emu.dir/Src/Debugger/MemoryCheckDlg.cpp.o CMakeFiles/dolphin-emu.dir/Src/Debugger/MemoryView.cpp.o CMakeFiles/dolphin-emu.dir/Src/Debugger/MemoryWindow.cpp.o CMakeFiles/dolphin-emu.dir/Src/Debugger/RegisterView.cpp.o CMakeFiles/dolphin-emu.dir/Src/Debugger/RegisterWindow.cpp.o CMakeFiles/dolphin-emu.dir/Src/FifoPlayerDlg.cpp.o CMakeFiles/dolphin-emu.dir/Src/Frame.cpp.o CMakeFiles/dolphin-emu.dir/Src/FrameAui.cpp.o CMakeFiles/dolphin-emu.dir/Src/FrameTools.cpp.o CMakeFiles/dolphin-emu.dir/Src/GameListCtrl.cpp.o CMakeFiles/dolphin-emu.dir/Src/GeckoCodeDiag.cpp.o CMakeFiles/dolphin-emu.dir/Src/HotkeyDlg.cpp.o CMakeFiles/dolphin-emu.dir/Src/ISOFile.cpp.o CMakeFiles/dolphin-emu.dir/Src/ISOProperties.cpp.o CMakeFiles/dolphin-emu.dir/Src/InputConfigDiag.cpp.o CMakeFiles/dolphin-emu.dir/Src/InputConfigDiagBitmaps.cpp.o CMakeFiles/dolphin-emu.dir/Src/LogConfigWindow.cpp.o CMakeFiles/dolphin-emu.dir/Src/LogWindow.cpp.o CMakeFiles/dolphin-emu.dir/Src/Main.cpp.o CMakeFiles/dolphin-emu.dir/Src/MemcardManager.cpp.o CMakeFiles/dolphin-emu.dir/Src/MemoryCards/WiiSaveCrypted.cpp.o CMakeFiles/dolphin-emu.dir/Src/NetWindow.cpp.o CMakeFiles/dolphin-emu.dir/Src/PHackSettings.cpp.o CMakeFiles/dolphin-emu.dir/Src/PatchAddEdit.cpp.o CMakeFiles/dolphin-emu.dir/Src/TASInputDlg.cpp.o CMakeFiles/dolphin-emu.dir/Src/UDPConfigDiag.cpp.o CMakeFiles/dolphin-emu.dir/Src/VideoConfigDiag.cpp.o CMakeFiles/dolphin-emu.dir/Src/WXInputBase.cpp.o CMakeFiles/dolphin-emu.dir/Src/WiimoteConfigDiag.cpp.o CMakeFiles/dolphin-emu.dir/Src/WxUtils.cpp.o CMakeFiles/dolphin-emu.dir/Src/GLInterface/GLX.cpp.o CMakeFiles/dolphin-emu.dir/Src/GLInterface/X11_Util.cpp.o CMakeFiles/dolphin-emu.dir/Src/X11Utils.cpp.o  -o ../../../Binaries/dolphin-emu  -L/home/linuxconsole/x86_64/lib -rdynamic ../Core/libcore.a /home/linuxconsole/x86_64/lib/liblzo2.so ../DiscIO/libdiscio.a ../../../Externals/Bochs_disasm/libbdisasm.a ../InputCommon/libinputcommon.so ../Common/libcommon.a ../AudioCommon/libaudiocommon.a -lz -lsfml-network /home/linuxconsole/x86_64/lib/libfreetype.so /home/linuxconsole/x86_64/lib/libgtk-x11-2.0.so /home/linuxconsole/x86_64/lib/libgdk-x11-2.0.so /home/linuxconsole/x86_64/lib/libcairo.so /home/linuxconsole/x86_64/lib/libpango-1.0.so /home/linuxconsole/x86_64/lib/libpangocairo-1.0.so /home/linuxconsole/x86_64/lib/libpangoft2-1.0.so /home/linuxconsole/x86_64/lib/libpangoxft-1.0.so /home/linuxconsole/x86_64/lib/libgdk_pixbuf-2.0.so /home/linuxconsole/x86_64/lib/libgthread-2.0.so /home/linuxconsole/x86_64/lib/libgmodule-2.0.so /home/linuxconsole/x86_64/lib/libgio-2.0.so /home/linuxconsole/x86_64/lib/libatk-1.0.so /home/linuxconsole/x86_64/lib/libgobject-2.0.so /home/linuxconsole/x86_64/lib/libglib-2.0.so /home/linuxconsole/x86_64/lib/libSM.so /home/linuxconsole/x86_64/lib/libICE.so /home/linuxconsole/x86_64/lib/libX11.so /home/linuxconsole/x86_64/lib/libXext.so -lXi -lXrandr /home/linuxconsole/x86_64/lib/libSDL2main.a /home/linuxconsole/x86_64/lib/libSDL2.so -lpthread -lavcodec -lavformat -lswscale -lavutil ../../../Externals/miniupnpc/libminiupnpc.a -L/home/linuxconsole/x86_64/lib -pthread -lwx_gtk2u_core-3.0 -lwx_gtk2u_aui-3.0 -lwx_gtk2u_adv-3.0 -lwx_baseu-3.0 ../../Plugins/Plugin_VideoSoftware/libvideosoftware.a ../../Plugins/Plugin_VideoOGL/libvideoogl.a ../VideoCommon/libvideocommon.a ../Core/libcore.a ../../Plugins/Plugin_VideoSoftware/libvideosoftware.a ../../Plugins/Plugin_VideoOGL/libvideoogl.a ../VideoCommon/libvideocommon.a ../../../Externals/Bochs_disasm/libbdisasm.a ../InputCommon/libinputcommon.so /home/linuxconsole/x86_64/lib/libusb-1.0.so ../../../Externals/polarssl/library/libpolarssl.a -lportaudio -L/home/linuxconsole/x86_64/lib -pthread ../../../Externals/SOIL/libSOIL.a -lGLEW /home/linuxconsole/x86_64/lib/libGLU.so /home/linuxconsole/x86_64/lib/libGL.so ../../../Externals/CLRun/libclrun.a -ldl -lsfml-network /home/linuxconsole/x86_64/lib/libSM.so /home/linuxconsole/x86_64/lib/libICE.so /home/linuxconsole/x86_64/lib/libX11.so /home/linuxconsole/x86_64/lib/libXext.so -lavcodec -lavformat -lswscale -lavutil -lwx_gtk2u_core-3.0 -lwx_gtk2u_aui-3.0 -lwx_gtk2u_adv-3.0 -lwx_baseu-3.0 ../Common/libcommon.a -lpthread /home/linuxconsole/x86_64/lib/libasound.so -lao /home/linuxconsole/x86_64/lib/libopenal.so ../../../Externals/soundtouch/libSoundTouch.a -lpulse-simple -lpulse -Wl,-rpath,/home/linuxconsole/x86_64/lib:/home/linuxconsole/dibab/src/dolphin-4.0.2/build/Source/Core/InputCommon: 

Le problème viendrait de la librairie libinputcommon.so, j'ai des " référence indéfinie vers « g_controller_interface » " ou "référence indéfinie vers « ControllerEmu::AnalogStick::AnalogStick(char const*) »

j'ai identifié le source des déclarations de ces fonctions, quand fait un "touch" sur ces sources, libinputcommon.so est bien recréé.

j'ai essayé le link avec un -linputcommon, sans succès

pour info :

objdump -x /home/linuxconsole/dibab/src/dolphin-4.0.2/build/Source/Core/InputCommon/libinputcommon.so | grep controller
0000000000223500 l O .bss 0000000000000050 g_controller_interface

Le problème vient sans doute de l'ordre des déclarations, quelqu'un a une idée pour que l'édition des liens fonctionne bien ?
Le log de build complet : http://jukebox.linuxconsole.org/dibab/build-bugs/dolphin-emu/nohup.out

Merci.

Yann

  • # des pistes

    Posté par . Évalué à 3. Dernière modification le 05/01/15 à 10:27.

    1°) le projet que tu essaye de compiler semble utiliser son dossier de lib plutot que celles du systeme,
    s'il manque une lib, c'est donc la dedans qu'il faut l'ajouter pour que ce soit pris en compte.

    2°) dans le log complet, ca explique que ce serait pour gerer la wiimote (entre autre), il y a peut-etre une option pour lui dire de ne pas chercher à compiler ce support si tu n'en a pas besoin.

    3°) ils disent quoi sur le site du projet (dibab/linuxconsole) à ce sujet ?

    • [^] # Re: des pistes

      Posté par (page perso) . Évalué à 1.

      1 - toutes mes libs sont compilées par moi-même (sauf les libs du toolchain)
      2 - les jeux Wii nécessitent une wiimote
      3 - je suis le développeur de LinuxConsole/Dibab, j'ai toujours réussi à compiler des programmes "from source" pour cette distrib, mais là je coince.

      • [^] # Re: des pistes

        Posté par . Évalué à 3.

        reprendre ton 3 puis ton 1

        il manque un objet, une librairie definissant l'objet,
        il te faut donc l'ajouter, peut-etre à partir de source tierce pour le mettre dans l'arborescence de ton projet.

        si tu es le developpeur, tu dois pouvoir trouver dans quel bout de code est definit l'objet, et le compiler avant le reste, comme etant un prerequis à la compilation finale

        • [^] # Re: des pistes

          Posté par (page perso) . Évalué à 2.

          Effectivement, la solution c'est de remplacer libinputcommon.so par les ".o" qui la composent.

          merci.

          • [^] # Re: des pistes

            Posté par . Évalué à 2.

            si tu compiles en statique, oui, il te faut les .o pour inclure dans ton projet.

            si tu compiles en dynamique, c'est au systeme ou tu installeras le logiciel de fournir de .so

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.