IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Distribuer une application


Sujet :

C++

  1. #1
    Membre averti
    Étudiant
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Par défaut Distribuer une application
    Bonjour,

    J'ai développé une application en C++ sous Linux.
    Elle utilise Qt et opencv (qui apparament utilise FFMPEG et V4L).

    J'aimerai distribuer le binaire de sorte que le client n'ai pas besoin d'installer les bibliothèques lui-même.

    Je voudrai donc créer un dossier libs contenant les bibliothèques utilisées par le programme et faire un script shell les ajoutant au path de l'utilisateur puis lançant le programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #!/bin/bash
     
     dirname=`dirname $0`
     if [ "${dirname:0:1}" != "/" ]; then
     dirname=$PWD/$dirname
     fi
     LD_LIBRARY_PATH=$dirname/libs
     export LD_LIBRARY_PATH
     
    ./gui
    Ma question est : comment savoir quelles bibliothèques ajouter exactement ? Comment récupérer les bons .so ?

    Merci beaucoup !

  2. #2
    Membre éprouvé
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    189
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 189
    Par défaut
    C'est pas la bonne technique sous Linux. Il y a des gestionnaires de paquets pour éviter ce genre de problème.

    Crée plutôt un paquet avec les bonnes dépendances.

  3. #3
    Membre averti
    Étudiant
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Par défaut
    Citation Envoyé par hiura Voir le message
    C'est pas la bonne technique sous Linux. Il y a des gestionnaires de paquets pour éviter ce genre de problème.

    Crée plutôt un paquet avec les bonnes dépendances.

    Oui mais le problème est que ce logiciel est dans le cadre de ma formation.
    Mon professeur souhaite avoir un CD contenant les sources, les exécutables ainsi que les bibliothèques nécessaires.
    Il ne veux pas installer quoique ce soit (en gros on prend il souhaite prendre le .tar.gz, le décompresser, double cliquer sur le .sh et c'est tout).

    C'est pourquoi j'avais penser à ajouter les libs dans un dossier et me servir de bitrock installer faire un .bin de mon application contenant le tout.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 223
    Par défaut
    Bonjour,

    Il existe une commande sous Linux qui permet de lister toutes les dépendances d'un binaire (ou même de plusieurs binaire d'ailleurs).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ldd /mon_dossier/mon_binaire
    Après, y'a peut être un moyen de mieux exploiter la commande, jete un œil au man .

    Cordialement,
    PKO

  5. #5
    Membre averti
    Étudiant
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Par défaut
    Citation Envoyé par Altess Voir le message
    Bonjour,

    Il existe une commande sous Linux qui permet de lister toutes les dépendances d'un binaire (ou même de plusieurs binaire d'ailleurs).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ldd /mon_dossier/mon_binaire
    Après, y'a peut être un moyen de mieux exploiter la commande, jete un œil au man .

    Cordialement,
    PKO

    Super commande, je ne connaissais pas !

    Voici ce qu'elle donne sur mon programme :
    guillaume@eeepc:~/esgi_2008_2009/cpp/projet/gui$ ldd ./gui
    linux-gate.so.1 => (0xb7fa1000)
    libcxcore.so.1 => /usr/lib/libcxcore.so.1 (0xb7e5c000)
    libcv.so.1 => /usr/lib/libcv.so.1 (0xb7d8d000)
    libhighgui.so.1 => /usr/lib/libhighgui.so.1 (0xb7d60000)
    libcvaux.so.1 => /usr/lib/libcvaux.so.1 (0xb7cc6000)
    libml.so.1 => /usr/lib/libml.so.1 (0xb7c88000)
    libQtGui.so.4 => /usr/lib/libQtGui.so.4 (0xb7385000)
    libQtCore.so.4 => /usr/lib/libQtCore.so.4 (0xb7157000)
    libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb713e000)
    libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb704f000)
    libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb7029000)
    libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb701a000)
    libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb6ebc000)
    libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb6eb8000)
    libgomp.so.1 => /usr/lib/libgomp.so.1 (0xb6eaf000)
    libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0xb6ea8000)
    librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0xb6e9f000)
    libgtk-x11-2.0.so.0 => /usr/lib/libgtk-x11-2.0.so.0 (0xb6b01000)
    libgdk-x11-2.0.so.0 => /usr/lib/libgdk-x11-2.0.so.0 (0xb6a75000)
    libatk-1.0.so.0 => /usr/lib/libatk-1.0.so.0 (0xb6a59000)
    libpangoft2-1.0.so.0 => /usr/lib/libpangoft2-1.0.so.0 (0xb6a30000)
    libpangocairo-1.0.so.0 => /usr/lib/libpangocairo-1.0.so.0 (0xb6a25000)
    libgio-2.0.so.0 => /usr/lib/libgio-2.0.so.0 (0xb69bd000)
    libcairo.so.2 => /usr/lib/libcairo.so.2 (0xb694a000)
    libpango-1.0.so.0 => /usr/lib/libpango-1.0.so.0 (0xb6907000)
    libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xb6891000)
    libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0xb6863000)
    libgdk_pixbuf-2.0.so.0 => /usr/lib/libgdk_pixbuf-2.0.so.0 (0xb6849000)
    libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0xb680b000)
    libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0xb6806000)
    libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb674f000)
    libpng12.so.0 => /usr/lib/libpng12.so.0 (0xb6728000)
    libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0xb6708000)
    libz.so.1 => /usr/lib/libz.so.1 (0xb66f2000)
    libtiff.so.4 => /usr/lib/libtiff.so.4 (0xb669d000)
    libjasper.so.1 => /usr/lib/libjasper.so.1 (0xb664e000)
    libavformat.so.52 => /usr/lib/i686/cmov/libavformat.so.52 (0xb65ad000)
    libavcodec.so.51 => /usr/lib/i686/cmov/libavcodec.so.51 (0xb605f000)
    libraw1394.so.8 => /usr/lib/libraw1394.so.8 (0xb6058000)
    libtheora.so.0 => /usr/lib/libtheora.so.0 (0xb600d000)
    libvorbisenc.so.2 => /usr/lib/libvorbisenc.so.2 (0xb5f13000)
    libavutil.so.49 => /usr/lib/i686/cmov/libavutil.so.49 (0xb5f03000)
    libvorbis.so.0 => /usr/lib/libvorbis.so.0 (0xb5ed9000)
    libogg.so.0 => /usr/lib/libogg.so.0 (0xb5ed2000)
    libaudio.so.2 => /usr/lib/libaudio.so.2 (0xb5eba000)
    libSM.so.6 => /usr/lib/libSM.so.6 (0xb5eb1000)
    libICE.so.6 => /usr/lib/libICE.so.6 (0xb5e99000)
    libXi.so.6 => /usr/lib/libXi.so.6 (0xb5e8f000)
    libXrender.so.1 => /usr/lib/libXrender.so.1 (0xb5e84000)
    libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0xb5e7d000)
    libXext.so.6 => /usr/lib/libXext.so.6 (0xb5e6e000)
    libX11.so.6 => /usr/lib/libX11.so.6 (0xb5d7f000)
    /lib/ld-linux.so.2 (0xb7f87000)
    libXcomposite.so.1 => /usr/lib/libXcomposite.so.1 (0xb5d7b000)
    libXdamage.so.1 => /usr/lib/libXdamage.so.1 (0xb5d77000)
    libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0xb5d72000)
    libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0xb5d6f000)
    libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0xb5d66000)
    libselinux.so.1 => /lib/libselinux.so.1 (0xb5d4c000)
    libpixman-1.so.0 => /usr/lib/libpixman-1.so.0 (0xb5d09000)
    libxcb-render-util.so.0 => /usr/lib/libxcb-render-util.so.0 (0xb5d04000)
    libxcb-render.so.0 => /usr/lib/libxcb-render.so.0 (0xb5cfc000)
    libxcb.so.1 => /usr/lib/libxcb.so.1 (0xb5ce3000)
    libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb5cbc000)
    libpcre.so.3 => /lib/libpcre.so.3 (0xb5c91000)
    libgsm.so.1 => /usr/lib/libgsm.so.1 (0xb5c84000)
    libXt.so.6 => /usr/lib/libXt.so.6 (0xb5c33000)
    libXau.so.6 => /usr/lib/libXau.so.6 (0xb5c30000)
    libxcb-xlib.so.0 => /usr/lib/libxcb-xlib.so.0 (0xb5c2c000)
    libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb5c27000)

  6. #6
    Membre éprouvé
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    189
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 189
    Par défaut
    Perso je préfère dpkg-shlibdeps qui est très utile pour élaborer un paquet .deb.

    Si tu crées un deb, tu peux le faire facilement installer, et tu n'auras pas à te soucier de distribuer les autres paquets nécessaires.

    Enfin, je dis ça car je trouve bête de ne pas profiter de l'architecture de fichier de Linux.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 223
    Par défaut
    La plupart de ces librairies sont déjà présente sur les distributions. A toi de voir celles qui ne le sont pas, afin de les linker/copier.

    Si le sujet est résolu, n'hésite pas a l'indiquer dans le titre de ton topic.

    Cordialement,
    PKO

  8. #8
    Membre averti
    Étudiant
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Par défaut
    Ok merci beaucoup de vos réponses, je test demain et je vous tiens au courant.

Discussions similaires

  1. Distribuer une application Delphi Interbase
    Par med1112 dans le forum Bases de données
    Réponses: 4
    Dernier message: 05/08/2008, 07h43
  2. Réponses: 1
    Dernier message: 30/05/2007, 13h36
  3. Réponses: 1
    Dernier message: 21/12/2005, 14h36
  4. [VB.NET] Distribuer une application en VB.net
    Par cbdreamdev dans le forum Windows Forms
    Réponses: 7
    Dernier message: 07/03/2005, 11h33
  5. Droits pour distribuer une application
    Par aliasjcdenton dans le forum JBuilder
    Réponses: 4
    Dernier message: 17/03/2003, 13h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo