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

Plateformes Discussion :

Quels paquets installer ? [Linux]


Sujet :

Plateformes

  1. #1
    Membre habitué
    Avatar de Glân von Brylân
    Homme Profil pro
    Développeur Web
    Inscrit en
    janvier 2014
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : janvier 2014
    Messages : 133
    Points : 191
    Points
    191
    Par défaut Quels paquets installer ?
    Bonjour,

    J'ai développé une application sur Qt et, soucieux de satisfaire les demandes d'un ami linuxien, j'ai entrepris d'installer des machines virtuelles pour compiler sous Linux. Jusqu'ici pas de problème : j'ai les exécutables, quand je les teste tout fonctionne à merveille.
    Cependant, quand mon ami récupère le programme, celui-ci ne fonctionne pas : il lui manque les bibliothèques.
    J'ai eu beau chercher, écumer l'internet, impossible de trouver quels paquets il doit installer.
    Sachant que j'ai utilisé Qt 5.5.1 et que sous Windows (au cas où ça aide), mon programme utilise les .dll suivantes :
    icudt54.dll
    icuin54.dll
    icuuc54.dll
    libgcc_s_dw2-1.dll
    libstdc++-6.dll
    libwinpthread-1.dll
    Qt5Core.dll
    Qt5Gui.dll
    Qt5Widgets.dll
    Pouvez-vous m'aider ?

    Merci d'avance.


    P.S. : Il m'a aussi demandé les "instruction de compilation". J'imagine qu'il parle des commandes du genre "g++ -c -pipe -fno-keep-inline-dllexport -O2 -std=c++0x -frtti -Wall etc" pour compiler lui-même les sources. Je peux lui donner toutes les commandes comme ça qui s'affichent dans la sortie de compilation de Qt Creator, mais c'est bien ça qu'il me demande ? Et n'est-ce pas plus simple qu'il installe des paquages ?
    J'ajoute enfin que je ne suis pas familier du tout avec GNU/Linux. Je sais faire pwd, mkdir, cd et c'est marre. Et j'ai toujours utilisé des IDE pour compiler, même si je sais utiliser les commandes (à peu près).
    Les pointeurs intelligents, c'est mignon mais trop long à écrire.

  2. #2
    Membre chevronné
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    janvier 2011
    Messages
    629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : janvier 2011
    Messages : 629
    Points : 2 064
    Points
    2 064
    Par défaut
    Bonsoir.

    Exécuter la commande linux ldd dans un terminal, qui va lister les libs dépendantes de ton programme, te fournira les réponses.
    Il faudra installer les libs listées via le gestionnaire de paquets (apt-get, yum, rpm selon la distribution Linux).
    Un exemple sur un programme donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     $ ldd qtprogram
    linux-vdso.so.1 =>  (0x00007ffeb13d1000)
    libQt5Widgets.so.5 => /home/user/Qt/5.5/gcc_64/lib/libQt5Widgets.so.5 (0x00007fbec7bdd000)
    libQt5Gui.so.5 => /home/user/Qt/5.5/gcc_64/lib/libQt5Gui.so.5 (0x00007fbec73ca000)
    libQt5Core.so.5 => /home/user/Qt/5.5/gcc_64/lib/libQt5Core.so.5 (0x00007fbec6c85000)
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fbec6976000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fbec6760000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fbec6396000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fbec6178000)
    libgobject-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007fbec5f26000)
    libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007fbec5d24000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fbec5b1c000)
    libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fbec580d000)
    libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007fbec55fb000)
    libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fbec52c2000)
    libGL.so.1 => /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 (0x00007fbec502a000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fbec4d22000)
    libicui18n.so.54 => /home/user/Qt/5.5/gcc_64/lib/libicui18n.so.54 (0x00007fbec48b4000)
    libicuuc.so.54 => /home/user/Qt/5.5/gcc_64/lib/libicuuc.so.54 (0x00007fbec4506000)
    libicudata.so.54 => /home/user/Qt/5.5/gcc_64/lib/libicudata.so.54 (0x00007fbec2adc000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fbec28d8000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fbec845b000)
    libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007fbec26d0000)
    libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fbec2463000)
    libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fbec2244000)
    libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007fbec201b000)
    libglapi.so.0 => /usr/lib/x86_64-linux-gnu/libglapi.so.0 (0x00007fbec1ded000)
    libXdamage.so.1 => /usr/lib/x86_64-linux-gnu/libXdamage.so.1 (0x00007fbec1bea000)
    libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007fbec19e4000)
    libX11-xcb.so.1 => /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1 (0x00007fbec17e2000)
    libxcb-glx.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0 (0x00007fbec15cb000)
    libxcb-dri2.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0 (0x00007fbec13c6000)
    libxcb-dri3.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0 (0x00007fbec11c3000)
    libxcb-present.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-present.so.0 (0x00007fbec0fc0000)
    libxcb-sync.so.1 => /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1 (0x00007fbec0dba000)
    libxshmfence.so.1 => /usr/lib/x86_64-linux-gnu/libxshmfence.so.1 (0x00007fbec0bb8000)
    libXxf86vm.so.1 => /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1 (0x00007fbec09b2000)
    libdrm.so.2 => /usr/lib/x86_64-linux-gnu/libdrm.so.2 (0x00007fbec07a3000)
    libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007fbec059f000)
    libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007fbec0399000)
    Citation Envoyé par Neoflash Okashi Voir le message
    P.S. : Il m'a aussi demandé les "instruction de compilation". J'imagine qu'il parle des commandes du genre "g++ -c -pipe -fno-keep-inline-dllexport -O2 -std=c++0x -frtti -Wall etc" pour compiler lui-même les sources.
    En effet, mais il faudra alors qu'il récupère toutes les sources de Qt juste pour compiler le programme.
    Le plus simple pour lui est de récupérer les libs requises comme indiqué ci-dessus.
    C'est de toutes façons ce que font tous les installateurs de logiciel (les setup.exe), sauf qu'ici tu le fera manuellement.
    Je fais appel aux esprits de Ritchie, Kernighan, Stroustrup et Alexandrescu
    Donnez moi la force, donnez moi le courage de coder proprement !

    « Ça marche pas » n'est PAS une réponse convenable, merci de détailler le souci en fournissant l’environnement, le code source, les commandes et les messages d'erreur.

    Ce club possède également un chat / clavardage, on y trouve quelques perles entre deux sessions d'entraides.

  3. #3
    Membre habitué
    Avatar de Glân von Brylân
    Homme Profil pro
    Développeur Web
    Inscrit en
    janvier 2014
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : janvier 2014
    Messages : 133
    Points : 191
    Points
    191
    Par défaut
    Excellent, merci beaucoup !

    Pour ceux qui passeraient voir ça, voici ce que j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objdump -p /path/to/program | grep NEEDED
    (commande conseillée par le manuel de ldd, à la place de ldd)
    (il faut bien évidemment remplacer /path/to/program par l'emplacement de l'exécutable donc vous voulez avoir les dépendances)
    Ce qui m'a affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      NEEDED               libQt5Widgets.so.5
      NEEDED               libQt5Gui.so.5
      NEEDED               libQt5Core.so.5
      NEEDED               libstdc++.so.6
      NEEDED               libgcc_s.so.1
      NEEDED               libc.so.6
    Vous récupérez donc les noms des bibliothèques, vous retirez le .so. (ce qui dans monc as donne libQt5Widgets5, libQt5Gui5, etc) et vous obtenez la liste des paquets que l'utilisateur doit installer via apt-get ou tout autre gestionnaire de paquets.

    Tadaa !
    Les pointeurs intelligents, c'est mignon mais trop long à écrire.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. tzdata m'empêche d'installer n'importe quel paquet
    Par ob2012 dans le forum Debian
    Réponses: 6
    Dernier message: 04/12/2012, 23h43
  2. [Lazarus] Quels paquets pour installer sur Ubuntu ?
    Par saidus dans le forum Lazarus
    Réponses: 4
    Dernier message: 10/03/2009, 00h36
  3. Quel kit installer avec NB?
    Par cnguyen dans le forum NetBeans
    Réponses: 4
    Dernier message: 03/06/2006, 17h29
  4. [eclipse][API] dans quel répertire installer une API ?
    Par Penelope333 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 26/01/2006, 18h09
  5. Réponses: 6
    Dernier message: 28/10/2004, 09h18

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