+ Répondre à la discussion Actualité déjà publiée
  1. #1
    Responsable Qt


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherches
    Inscrit en
    août 2008
    Messages
    22 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur de recherches
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2008
    Messages : 22 272
    Points : 121 452
    Points
    121 452

    Par défaut Compilation de GCC 4 sous Windows

    Bonjour,

    Ce post est là pour que vous puissiez vous exprimer face à cet article : commentaires, précisions à apporter, problèmes insolubles ou autres.

    Merci d'avance pour vos contributions !

    Article à voir ici :
    http://tcuvelier.developpez.com/cross-gcc/gcc-natif/
    Vous souhaitez participer aux rubriques Qt ou PyQt (tutoriels, FAQ, traductions) ? Contactez-moi par MP.

    Nouveau ! Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  2. #2
    Membre confirmé Avatar de rt15
    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2005
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : octobre 2005
    Messages : 229
    Points : 563
    Points
    563

    Par défaut

    Bonjour,

    Déjà félicitation pour le tuto, j'imagine que ça doit être assez galère.

    Je n'ai pas beaucoup de connaissances sur le sujet et je suis cependant impressionné que cela soit tout simplement possible.

    J'avais cru comprendre que la compatibilité binaires, sous Linux, n'était pas des plus garantit. Autrement dit, qu'un ELF compilé sous une Debian, aurait peu de chances de tourner sur une red hat, même si cet ELF ne font qu'utiliser la lib C.

    En effet, si je regarde les dépendances de mon gcc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    libc.so.6 => /lib/tls/libc.so.6 (0x0078d000)
            /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x0049a000)
     
            Version information:
            /usr/bin/gcc:
                    libc.so.6 (GLIBC_2.1) => /lib/tls/libc.so.6
                    libc.so.6 (GLIBC_2.0) => /lib/tls/libc.so.6
            /lib/tls/libc.so.6:
                    ld-linux.so.2 (GLIBC_2.3) => /lib/ld-linux.so.2
                    ld-linux.so.2 (GLIBC_2.1) => /lib/ld-linux.so.2
                    ld-linux.so.2 (GLIBC_2.0) => /lib/ld-linux.so.2
                    ld-linux.so.2 (GLIBC_PRIVATE) => /lib/ld-linux.so.2
    Si ces librairies ne sont pas présentes et dans les bonnes versions, mon programme ne tournera jamais. Ces librairies sont toujours présentes sur toutes les distributions Linux ????

    Ou alors la lib C doit être cross compilée avec gcc ? Dans ce cas elle aussi a forcément des dépendances. Sur les appels systèmes (fopen utilsant open, printf utilisant write, etc...), via syscall (Donc pas de librairie, tout se fait par interruption). Mais dans ce cas, il faut que les appels systèmes ne bougent pas d'un pouce... Est-ce si vrai que cela d'une distribution linux à l'autre ? D'une version linux à l'autre ?

    Merci de m'éclairer.

  3. #3
    Responsable Qt


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherches
    Inscrit en
    août 2008
    Messages
    22 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur de recherches
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2008
    Messages : 22 272
    Points : 121 452
    Points
    121 452

    Par défaut

    Citation Envoyé par rt15 Voir le message
    Bonjour,

    Déjà félicitation pour le tuto, j'imagine que ça doit être assez galère.

    Je n'ai pas beaucoup de connaissances sur le sujet et je suis cependant impressionné que cela soit tout simplement possible.
    En effet, j'ai galéré deux semaines pour obtenir quelque chose de compilable (c'est une occupation comme une autre).

    Citation Envoyé par rt15 Voir le message
    J'avais cru comprendre que la compatibilité binaires, sous Linux, n'était pas des plus garantit. Autrement dit, qu'un ELF compilé sous une Debian, aurait peu de chances de tourner sur une red hat, même si cet ELF ne font qu'utiliser la lib C.

    En effet, si je regarde les dépendances de mon gcc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    libc.so.6 => /lib/tls/libc.so.6 (0x0078d000)
            /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x0049a000)
     
            Version information:
            /usr/bin/gcc:
                    libc.so.6 (GLIBC_2.1) => /lib/tls/libc.so.6
                    libc.so.6 (GLIBC_2.0) => /lib/tls/libc.so.6
            /lib/tls/libc.so.6:
                    ld-linux.so.2 (GLIBC_2.3) => /lib/ld-linux.so.2
                    ld-linux.so.2 (GLIBC_2.1) => /lib/ld-linux.so.2
                    ld-linux.so.2 (GLIBC_2.0) => /lib/ld-linux.so.2
                    ld-linux.so.2 (GLIBC_PRIVATE) => /lib/ld-linux.so.2
    Si ces librairies ne sont pas présentes et dans les bonnes versions, mon programme ne tournera jamais. Ces librairies sont toujours présentes sur toutes les distributions Linux ????
    C'est pour cela que le LSB existe : il précise ce qui est nécessaire pour que les binaires soient compatibles sur toutes les distributions. Mais sans préciser les versions, et c'est pour cela que le AppChecker a été créé : il vérifie que les binaires correspondent au LSB, puis les distributions avec lesquelles le binaire est compatible (les versions, notamment).

    En gros, on ne peut être sûr que de la disponibilité des librairies, grâce au LSB, que la majorité des distros respecte, jamais de leur version : le LSB définit une version minimale uniquement.




    Plus d'info :
    Citation Envoyé par rt15 Voir le message
    Ou alors la lib C doit être cross compilée avec gcc ? Dans ce cas elle aussi a forcément des dépendances. Sur les appels systèmes (fopen utilsant open, printf utilisant write, etc...), via syscall (Donc pas de librairie, tout se fait par interruption). Mais dans ce cas, il faut que les appels systèmes ne bougent pas d'un pouce... Est-ce si vrai que cela d'une distribution linux à l'autre ? D'une version linux à l'autre ?
    La lib C doit être compilée, sans quoi tu ne compileras rien du tout. Elle est prévue pour avoir le moins de dépendance possible (c'est-à-dire aucune).

    Les appels systèmes sont gérés par les headers du kernel (paquet kernel-dev ou nom semblable), ils ne changent pas d'une distro à l'autre. Ils peuvent changer d'un kernel à l'autre, mais c'est quand même très peu probable.

    Je suppose que cela te suffit. Si tu en veux plus, n'hésite pas à demander ici !
    Vous souhaitez participer aux rubriques Qt ou PyQt (tutoriels, FAQ, traductions) ? Contactez-moi par MP.

    Nouveau ! Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  4. #4
    Membre confirmé Avatar de rt15
    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2005
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : octobre 2005
    Messages : 229
    Points : 563
    Points
    563

    Par défaut

    Nickel merci encore.

Discussions similaires

  1. Compiler du code Pascal sous Windows en .so (Java)
    Par obione dans le forum Pascal
    Réponses: 4
    Dernier message: 04/05/2010, 17h29
  2. compiler les forms swing sous windows
    Par redenil dans le forum AWT/SWING
    Réponses: 3
    Dernier message: 09/04/2009, 16h48
  3. Cross-compilation avec GCC 4 sous Windows pour Linux
    Par dourouc05 dans le forum Contribuez
    Réponses: 0
    Dernier message: 08/04/2009, 18h25
  4. Compiler un programme Boost sous Windows avec Cygwin
    Par asher256 dans le forum Boost
    Réponses: 3
    Dernier message: 20/11/2008, 21h07

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