Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 28/03/2016, à 12:00

zenux

Distribuer un binaire + OpenGL

Bonjour,

J'ai développé un petit jeu en OpenGL et j'aimerais le distribuer de la façon la plus simple possible.

J'ai vu qu'une façon de distribuer un binaire est de créer une archive avec:
* Le binaire déjà compilé (x86_64)
* Un dossier qui contient toutes les dynamic library (*.so)
* Créer un fichier .sh qui ajoute le dossier des dynamic library à "LD_LIBRARY_PATH" et qui lance le fichier binaire.

=> Est-ce que cette technique fonctionne bien ?
=> Par exemple, je vois que mon binaire à besoin de "/usr/lib/nvidia-352-updates/libGL.so.1". Si je fournis cette dynamic library: est-ce qu'elle va fonctionner pour tous les utilisateurs même si l'utilisateur n'a pas le driver NVidia 352 d'installé ? Et même si l'utilisateur à une carte graphique autre que NVidia ?!
=> Pourquoi mon binaire a des dépendances vers une dynamic library de NVidia ? Est-ce normal ?

greg@greg-pc:~/Project/VideoGame/greenCity$ lddtree greenCity 
greenCity => ./greenCity (interpreter => /lib64/ld-linux-x86-64.so.2)
    libsfml-graphics.so.2.3 => /usr/lib/x86_64-linux-gnu/libsfml-graphics.so.2.3
        libGL.so.1 => /usr/lib/nvidia-352-updates/libGL.so.1
            libnvidia-tls.so.352.63 => /usr/lib/nvidia-352-updates/libnvidia-tls.so.352.63
            libnvidia-glcore.so.352.63 => /usr/lib/nvidia-352-updates/libnvidia-glcore.so.352.63
            libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6
                libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1
                    libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6
                    libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6
            libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6
            libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2
                ld-linux-x86-64.so.2 => /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
        libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6
            libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1
...

Merci d'avance.

Hors ligne

#2 Le 28/03/2016, à 16:53

claudius01

Re : Distribuer un binaire + OpenGL

Bonjour,

zenux a écrit :

1 - Par exemple, je vois que mon binaire à besoin de "/usr/lib/nvidia-352-updates/libGL.so.1". Si je fournis cette dynamic library: est-ce qu'elle va fonctionner pour tous les utilisateurs même si l'utilisateur n'a pas le driver NVidia 352 d'installé ? Et même si l'utilisateur à une carte graphique autre que NVidia ?!

2 -  Pourquoi mon binaire a des dépendances vers une dynamic library de NVidia ? Est-ce normal ?

1 - En toute rigueur, cela n'est pas à toi de livrer / relivrer des librairies fournies dans un autre package. De plus, si en plus celle-ci est requise par un matériel spécifique, cela risque et a même de forte chance de ne pas fonctionner. C'est toute la difficulté de distribuer ses contributions ;-)

2 - Sans doute parce cette dynamic library de NVidia est "tirée" par une ou plusieurs autres librairies dynamiques. Malheureusement ldd n'est pas récursif et c'est pourquoi il existe des projets comme tldd ou autres comme Recursive implementation of List Dynamic Dependencies (LDD) plus simple à mettre en œuvre car écrit en Perl (faire une recherche de linux ldd recursive) qui permettent de savoir qui "tire" quoi...

Dernière modification par claudius01 (Le 28/03/2016, à 18:02)

Hors ligne