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

Applications et environnements graphiques Discussion :

Binaire 32 bits ne s'exécute pas dans machine 64 bits


Sujet :

Applications et environnements graphiques

  1. #1
    Expert éminent sénior
    Binaire 32 bits ne s'exécute pas dans machine 64 bits
    Bonjour,

    dans un dossier à moi j'ai un binaire
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    # ls -AlGg
    total 4072
    -rwxr-xr-x 1 4166336 nov.  19  2013 Multiconv


    créé et compilé avec Lazarus1.4/FreePascal2.6 (du 32bits tout ça)

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    # file Multiconv 
    Multiconv: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, stripped


    qui ne s'exécute pas, avec un message d'erreur vraiment hors de propos
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    # ./Multiconv 
    bash: ./Multiconv: Aucun fichier ou dossier de ce type


    puisque ce petit outil n'attend rien à part des saisies au clavier pour faire des conversions -- et il a toujours bien fonctionné dans l'ancienne machine.

    Est-ce que ça pourrait être lié au fait que /lib/ld-linux.so.2 n'existe pas dans ma nouvelle machine, ce qui sous-entend qu'il va me falloir recompiler tous mes vieux petits progs ?
    Ou un raccourci /lib/ld-linux.so.2 vers /usr/lib64/ld-linux-x86-64.so.2 pourrait faire l'affaire ? J'ai tenté ln -s /usr/lib64/ld-linux-x86-64.so.2 ld-linux.so.2, le résultat n'est pas glorieux :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    # ./Multiconv 
    bash: ./Multiconv: Accès d''une librairie partagée qui est corrompue


    Merci,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  2. #2
    Responsable Systèmes

    As-tu le paquet ia32-libs d'installé ?
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur la création d'un système : http://chrtophe.developpez.com/tutor...s/minisysteme/
    Mon article sur le P2V : http://chrtophe.developpez.com/tutoriels/p2v/
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Expert éminent sénior
    Citation Envoyé par chrtophe Voir le message
    As-tu le paquet ia32-libs d'installé ?
    Inconnu au bataillon de Synaptic, tout comme ia32-lib sans s. Quant à une recherche de ia32 tout court, ça ne me remonte que
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  4. #4
    Responsable Systèmes

    Que donne ldd ton_executable ?
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur la création d'un système : http://chrtophe.developpez.com/tutor...s/minisysteme/
    Mon article sur le P2V : http://chrtophe.developpez.com/tutoriels/p2v/
    Consultez nos FAQ : Windows, Linux, Virtualisation

  5. #5
    Expert éminent sénior
    Citation Envoyé par chrtophe Voir le message
    Que donne ldd ton_executable ?
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    n'est pas un exécutable dynamique

    depuis la machine 64 bits, et plus d'une quarantaine de lignes de lib...so.x (adresse hexa) dans la machine 32 bits à l'origine du binaire.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  6. #6
    Responsable Systèmes

    n'est pas un exécutable dynamique
    ce qui me parait faux cf :

    Multiconv: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, stripped
    Essayes d'installer la libc 32 bits
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    apt-get install libc6:i386

    si ça fonctionne pas fait avant :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
     
    dpkg --add-architecture i386
    apt-get update


    Je te conseilles de faire une sauvegarde de ton système avant. Il me semble que tu travailles sur VM,dans ce cas un petit cliché...
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur la création d'un système : http://chrtophe.developpez.com/tutor...s/minisysteme/
    Mon article sur le P2V : http://chrtophe.developpez.com/tutoriels/p2v/
    Consultez nos FAQ : Windows, Linux, Virtualisation

  7. #7
    Expert éminent sénior
    Et voir aussi si la partition est autorisée à faire de l'exécution...
    Cordialement.

  8. #8
    Expert éminent sénior
    Citation Envoyé par disedorgue Voir le message
    Et voir aussi si la partition est autorisée à faire de l'exécution...
    Elle l'est, c'est le disque système, et j'ai recopié le binaire ls dans le dossier de mon binaire 32 bits, où il fonctionne as expected.

    Citation Envoyé par chrtophe Voir le message
    Essayes d'installer la libc 32 bits
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    apt-get install libc6:i386

    si ça fonctionne pas fais avant :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
     
    dpkg --add-architecture i386
    apt-get update


    Je te conseilles de faire une sauvegarde de ton système avant. Il me semble que tu travailles sur VM,dans ce cas un petit cliché...
    Non non, ce n'est pas une VM, c'est l'install de ma nouvelle machine.

    Alors en fait j'ai fait l'inverse :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    dpkg --add-architecture i386
    apt-get update
    apt-get install libc6:i386


    et quand j'exécute ce binaire maudit, maintenant je gagne
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    ./Multiconv: error while loading shared libraries: libX11.so.6: cannot open shared object file: No such file or directory.


    Je regarde depuis Synaptic les fichiers du paquet libc6:i386 et surprise !, il ne contient pas libX11.so.6

    Une autre idée ?
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  9. #9
    Membre éclairé
    Ça semble être dans le paquet libx11-6 (en i386) : https://packages.debian.org/search?s...e&arch=any

  10. #10
    Expert éminent sénior
    Bonjour,

    Citation Envoyé par balkany Voir le message
    Ça semble être dans le paquet libx11-6 (en i386) : https://packages.debian.org/search?s...e&arch=any
    et merci pour cette piste, qui semble bonne (mais incomplète, hélas).

    J'ai donc tenté un apt-get install libx11-6:i386 qui s'est bien déroulé et qui m'a fait progresser puisque maintenant, quand je lance mon binaire maudit, je gagne
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    error while loading shared libraries: libgdk_pixbuf-2.0.so.0: cannot open shared object file: No such file or directory

    et si je fais ldd Multiconv j'ai maintenant une vingtaine de lignes de lib...so.x dont une dizaine est taggée "=> not found".
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    	…
    	libX11.so.6 => /lib/i386-linux-gnu/libX11.so.6 (0xf7de2000)
    	libgdk_pixbuf-2.0.so.0 => not found
    	libgtk-x11-2.0.so.0 => not found
    	libgdk-x11-2.0.so.0 => not found
    	libgobject-2.0.so.0 => not found
    	libglib-2.0.so.0 => not found
    	libgthread-2.0.so.0 => not found
    	libgmodule-2.0.so.0 => not found
    	libpango-1.0.so.0 => not found
    	libcairo.so.2 => not found
    	libatk-1.0.so.0 => not found
    	libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf7dda000)


    Plus qu'à trouver les packages qui vont bien…
    Je vous tiens au courant,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  11. #11
    Expert éminent sénior
    Alors je ne sais pas si c'est une bonne idée d'installer tout un fourbi qui se mord la queue dans tous les sens, dans la mesure où apt-get n'est pas trop capable de gérer ça, exemple avec libgtk2 :
    (note : j'ai remplacé toutes les apostrophes ['] par des doubles quotes, sinon c'est un fouillis de couleurs immonde)
    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
    # apt-get install libgtk2.0:i386
    Lecture des listes de paquets... Fait
    Construction de l''arbre des dépendances       
    Lecture des informations d''état... Fait
    Note : sélection de libgtk2.0-bin:i386 pour l''expression rationnelle « libgtk2.0 »
    Note : sélection de libgtk2.0-cil:i386 pour l''expression rationnelle « libgtk2.0 »
    Note : sélection de libgtk2.0-dev:i386 pour l''expression rationnelle « libgtk2.0 »
    Note : sélection de libgtk2.0-doc:i386 pour l''expression rationnelle « libgtk2.0 »
    Note : sélection de libgtk2.0-0:i386 pour l''expression rationnelle « libgtk2.0 »
    Note : sélection de libgtk2.0-common:i386 pour l''expression rationnelle « libgtk2.0 »
    Note : sélection de libgtk2.0-cil-dev:i386 pour l''expression rationnelle « libgtk2.0 »
    Note : sélection de « libgtk2.0-common » au lieu de « libgtk2.0-common:i386 »
    Note : sélection de « libgtk2.0-doc » au lieu de « libgtk2.0-doc:i386 »
    libgtk2.0-common est déjà la version la plus récente (2.24.32-3).
    libgtk2.0-common passé en « installé manuellement ».
    Certains paquets ne peuvent être installés. Ceci peut signifier
    que vous avez demandé l''impossible, ou bien, si vous utilisez
    la distribution unstable, que certains paquets n''ont pas encore
    été créés ou ne sont pas sortis d''Incoming.
    L''information suivante devrait vous aider à résoudre la situation : 
     
    Les paquets suivants contiennent des dépendances non satisfaites :
     libgtk2.0-cil:i386 : Dépend: cli-common:i386 (>= 0.5.6) mais il n''est pas installable
                          Dépend: libglib2.0-cil:i386 (= 2.12.40-2) mais ne sera pas installé
                          Dépend: libmono-cairo4.0-cil:i386 (>= 4.0.4.1) mais il n''est pas installable
                          Dépend: libmono-corlib4.5-cil:i386 (>= 4.6.1.3) mais il n''est pas installable
                          Dépend: libmono-system-drawing4.0-cil:i386 (>= 4.6.1.3) mais il n''est pas installable
     libgtk2.0-cil-dev:i386 : Dépend: libglib2.0-cil-dev:i386 (= 2.12.40-2) mais ne sera pas installé
    E: Impossible de corriger les problèmes, des paquets défectueux sont en mode « garder en l''état ».


    Alors j'ai regardé avec Synaptic les dépendances de libglib2.0-cil et indépendamment de l'incohérence qui nous montre que le paquet est en conflit avec lui-même,
    (en haut 2 lignes de Synaptic, dessous la fenêtre de clic droit / propriétés sur la ligne sélectionnée)
    ,

    il y a une foultitude de machins qui doivent être installés avant et là, c'est un coup à en oublier, ou à tout casser...

    Me demande si je n'aurais pas plus vite fait de recompiler les progs, puisque j'ai les sources.

    Ou alors si quelqu'un a une solution simple ?
    Parce qu'in fine, quand je lance mon binaire, plutôt qu'un message abscons, ça serait quand même plus cool que le système me dise qu'il me "manque ça, ça et ça, voulez-vous que je les installe pour vous (O/n) ?"
    Mais c'est sans doute trop demander…
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  12. #12
    Membre éclairé
    Il a l'air trop vieux ton exécutable, trop décalé par rapport au reste du système pour être installé via le gestionnaire de paquets (qu'il soit lui-même empaqueté ou non).
    Une solution pourrait être de le faire tourner dans un conteneur avec toutes ses libs, à l'écart du système, comme font les snap, flatpak, etc. (je ne sais pas du tout si c'est facile à fabriquer…)
    Une autre solution dans ce genre de cas, c'est de passer à un équivalent plus récent du logiciel en question, idéalement proposé dans les dépôts officiels de ta distribution (perso je ferais ça).

  13. #13
    Expert éminent sénior
    Citation Envoyé par balkany Voir le message
    Il a l'air trop vieux ton exécutable, trop décalé par rapport au reste du système pour être installé via le gestionnaire de paquets (qu'il soit lui-même empaqueté ou non).
    Une solution pourrait être de le faire tourner dans un conteneur avec toutes ses libs, à l'écart du système, comme font les snap, flatpak, etc. (je ne sais pas du tout si c'est facile à fabriquer…)
    Une autre solution dans ce genre de cas, c'est de passer à un équivalent plus récent du logiciel en question, idéalement proposé dans les dépôts officiels de ta distribution (perso je ferais ça).
    C'est le genre de truc qui est en dehors de tout gestionnaire, c'est du code perso écrit avec Lazarus et compilé avec FreePascal,

    flatpak j'ai testé avec The Gimp et n'en suis pas du tout convaincu, c'est une usine à gaz, rien à voir avec le bonheur et la simplicité d'AppImages, à un bémol près : impossible de configurer le fourbi, impossible donc dans LibreOffice de supprimer toutes les polices exotiques dont je ne me servirai jamais. Dommage.
    snap, je ne connais pas du tout. Qui l'utilise ?

    Et pour l'équivalent plus récent, oui, je vais recompiler. Dommage aussi que des choses qui paraissent toutes simples sur le papier ne le soient pas au bout du compte.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  14. #14
    Membre éclairé
    Citation Envoyé par Jipété Voir le message
    C'est le genre de truc qui est en dehors de tout gestionnaire, c'est du code perso écrit avec Lazarus et compilé avec FreePascal,
    Ce que je voulais dire, c'est que tu pourrais empaqueter cet exécutable pour ta distribution, mais que ça ne changerait rien : son arbre de dépendances ne peut manifestement pas être intégré à celui de ton système actuel.
    Ça automatiserait simplement la procédure de recherche de dépendances suivie plus haut manuellement, pour aboutir au même échec.
    snap, je ne connais pas du tout. Qui l'utilise ?
    Ubuntu : c'est produit par canonical, en concurrence de flatpak, qui a l'appui de red hat…
    Et pour l'équivalent plus récent, oui, je vais recompiler.
    Est-ce que ça va suffire… ?

  15. #15
    Expert éminent sénior
    Citation Envoyé par balkany Voir le message
    Est-ce que ça va suffire… ?
    Totalement.
    D'ailleurs c'est fait depuis la fin de la matinée et ça fonctionne : FreePascal s'intègre très bien dans Linux, tout comme Lazarus, il n'y a aucun souci, en 32 comme en 64 bits.

    Il y a 3 points Deb qui font le taf et ça roule,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  16. #16
    Membre éclairé

###raw>template_hook.ano_emploi###