Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: [Erreur] Linkage sfml et compilation Raspberry Pi 2 (Architecture ARM6)  (Lu 2750 fois)

0 Membres et 1 Invité sur ce sujet

Vi_riaX

  • Newbie
  • *
  • Messages: 4
    • Voir le profil
    • E-mail
Bonsoir,

Je travail sur une Raspberry Pi 2B (architecture ARM6), je ne peut donc pas vous copier-coller le moindre message d'erreur. Essayons-donc de faire clair.

J'ai récupéré la lib sur le site officiel, tar -xf dans /usr/local/lib.
J'ai donc /usr/local/lib/SFML-2.2/
                                               ->/lib/
                                               ->/include/
                                               ->/share/

Je compile avec :
g++ sfml_test.cpp -I /usr/local/lib/SFML-2.2/include -L  /usr/local/lib/SFML-2.2/lib -lfsml-graphics -lsfml-window -lsfml-system

J'obtiens alors :
/usr/bin/ld : skipping incompatible /usr/local/lib/SFML-2.2/include/lib-libsfml-graphics.so when shearching for -lsfml-graphics
/urs/bin/ld: cannot find -lsfml-graphics
[...]
Idem pour -lsfml-window et -lsfml-system, et pour tout les autres flags d'ailleurs.
[...]

Sans ces flags, erreurs dans les vtables, car pas de link dynamique des lib... Et donc pas de programme!

J'attends vos idées, et je promet un gros merci à tous ceux qui essayeront! ;)

PS: Ne faites pas attentions aux possibles "fautes d'orthographe" dans le code, ce ne sont pas des copier-collés, c'est écrit à la main!
« Modifié: Avril 14, 2015, 08:03:27 am par Vi_riaX »

Vi_riaX

  • Newbie
  • *
  • Messages: 4
    • Voir le profil
    • E-mail
Re : Erreur de linkage
« Réponse #1 le: Avril 12, 2015, 11:29:31 pm »
J'ai même fait :
export LD_LIBRARY_PATH=/usr/local/SFML-2.2/lib

qui se trouve bien dans mon env.

Je doit avouer que je coince vraiment la, pourtant je ne suis pas un débutant en programmation!

--- Edit 1 ---

Je vais essayer de déplacer la lib dans usr/lib plutôt que dans /usr/local/lib mais je n'y crois pas trop...

--- Edit 2 ---

Pas de changement...
J'ai essayé le link direct et crade : /usr/lib/SFML-2.2/lib/lib-system.so et /usr/lib/SFML-2.2/lib/lib-system.so.2.2.0 mais, nouvelle erreur :
"error in adding symbols: File in wrong format"

Est-ce parce que je suis sous Raspbian (qui est donc issu d'un kernel debian)? J'utilise Fedora&Cie sur mon pc fixe, alors je ne sais pas si c'est lié mais j'ai vu de nombreuses "incompatibilités" entre la SFML et débian...
« Modifié: Avril 12, 2015, 11:47:42 pm par Vi_riaX »

victorlevasseur

  • Full Member
  • ***
  • Messages: 206
    • Voir le profil
Re : Erreur de linkage
« Réponse #2 le: Avril 13, 2015, 06:55:48 am »
Tu as compilé SFML ? Car, au dernières nouvelles, il n'y a pas de binaires pré-compilés pour les linux ARM5/6. Tu dois sûrement utiliser une version de SFML pour x86 (PC normaux), ce qui explique le message "File in wrong format".

Vi_riaX

  • Newbie
  • *
  • Messages: 4
    • Voir le profil
    • E-mail
Re : Erreur de linkage
« Réponse #3 le: Avril 13, 2015, 07:21:40 am »
Je me suis dit la même chose cette nuit, mais merci pour ta réponse, ça confirme que ce'est peut-être la bonne voie!  8)

Je suis donc le tuto officiel : http://www.sfml-dev.org/tutorials/2.2/compile-with-cmake-fr.php

Je vais virer la SFML actuellement installée, et je la recompile sur la PI...
J'espère que ça va marcher!  ;D

--- Edit ---

Bug de Cmake...

J'explique:
Tout à l'air de fonctionner correctement après l'installation de cmake (hé oui, ya rien sur une PI), et les libs demandées en dev:
    pthread
    opengl
    xlib
    xrandr
    freetype
    glew
    jpeg
    sndfile
    openal
C'est à dir que tout mes "sudo apt-get install libxrandr-dev" ont lieux sans incident ni message d'erreur.
Pourtant à la fin du process, j'obtiens :
Cmake Error at /usr/share/cmake-2.8/Modules/FindPackagesHandleStandardArgs.cmake:97 (Message)
   Could NOT find Freetype (Missing FREETYPE_INCLUDE_DIR)

--- Edit 2 ---

Et j'ai bien installé Freetype6-dev, avant que l'on me fasse la proposition ;)
(sudo apt-get install libfreetype6-dev)

--- Edit 3 ---

J'ai regardé CMakeCache.txt (le fichier généré par cmake lors de la "compilation") et le lien vers la lib est la... j'ai bien trouvé le bout de code suivant (ligne 168 si quelqu'un à le même problème):

//Path to a library
FREETYPE_LIBRARY:FILEPATH=/usr/lib/arm-linux-gnueabihf/libfreetype.so

Et puis bon la lib est la et à jour...
« Modifié: Avril 13, 2015, 09:07:35 am par Vi_riaX »

Hiura

  • SFML Team
  • Hero Member
  • *****
  • Messages: 4321
    • Voir le profil
    • E-mail
Re : [Erreur] Linkage sfml et compilation Raspberry Pi 2 (Architecture ARM6)
« Réponse #4 le: Avril 13, 2015, 09:33:04 am »
Regarde sur le forum anglais, qqn a réussi récemment à le faire si je ne me trompe pas.
SFML / OS X developer

Vi_riaX

  • Newbie
  • *
  • Messages: 4
    • Voir le profil
    • E-mail
Re : [Erreur] Linkage sfml et compilation Raspberry Pi 2 (Architecture ARM6)
« Réponse #5 le: Avril 13, 2015, 10:02:51 am »
Vu : http://en.sfml-dev.org/forums/index.php?topic=17771.msg128338#msg128338

A vrai dire, j'avais pensé à installer une VM avec un debian sur mon PC, y mettre la SFML et compiler pour architecture arm6... puis l'envoyer via un serveur ou autre à la PI...

Merci, je regarde ça en détail et je vous dis si ça marche.  ;)

--- Edit 1 ---

La ligne suivante permet en effet la compilation de la SFML sur Raspberry PI et architecture ARM6:
cmake -DEGL_INCLUDE_DIR=/opt/vc/include -DEGL_LIBRARY=/opt/vc/lib/libEGL.so
-DFREETYPE_INCLUDE_DIR_freetype2=/usr/include
-DFREETYPE_INCLUDE_DIR_ft2build=/usr/include/freetype2 -DGLES_INCLUDE_DIR=/opt/vc/include
-DGLES_LIBRARY=/opt/vc/lib/libGLESv1_CM.so -DSFML_BCMHOST=1

Après je suis un bleu en ce qui concerne cmake, mais ça marche!
Les flags en trop passés en paramètre sont ignorés...

Après, il ne reste plus qu'à faire un sudo make all, et c'est bon, bingo!

--- Edit 2 ---

On enchaine avec :
g++ -c main.cpp -I /usr/lib/SFML-2.2/include
g++ main.o -o test -L /usr/lib/SFML-2.2/lib -lsfml-system -lsfml-window -lsfml-graphics [...] (ajouter audio et network au besoin)
export LD_LIBRARY_PATH=/usr/lib/SFML-2.2/lib (à mettre dans votre .profile pour l'avoir au démarrage)
./test

J'ai un dernier message d'erreur:
Failed to open X11 display: make sure the DISPLAY environnement variable is set correctly. Aborted.

Il faut en effet passer par l'environnement graphique normal :
startx
export LD_LIBRARY_PATH=/usr/lib/SFML-2.2/lib (à mettre dans votre .profile pour l'avoir au démarrage)
./test

Et la ça marche!!!

Ma dernière question : Comment lancer un exécutable sans passer par startx et l'interface classique?
Je voudrai faire un programme qui se lance au démarrage sans avoir besoin de passer par la GUI classique. Des idées?

Les variables d'environnement sont très différentes avec et sans startx... Il doit y avoir un moyen de contourner le problème. (et export DISPLAY=:0.0 ne marche pas, j'ai essayé)
« Modifié: Avril 13, 2015, 07:28:34 pm par Vi_riaX »

victorlevasseur

  • Full Member
  • ***
  • Messages: 206
    • Voir le profil
Re : [Erreur] Linkage sfml et compilation Raspberry Pi 2 (Architecture ARM6)
« Réponse #6 le: Avril 17, 2015, 12:20:52 am »
Juste un détail, pour la RPi 2, c'est l'ARM7 qui est utilisé (les programmes ARM6 marchent mais ceux compilés pour ARM7 sont normalement plus performants).