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

GCC Discussion :

Compiler avec GCC 7.3 sous Xubuntu 18.04


Sujet :

GCC

  1. #1
    Membre expérimenté

    Homme Profil pro
    Retraite
    Inscrit en
    Octobre 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraite
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 487
    Points : 1 371
    Points
    1 371
    Billets dans le blog
    1
    Par défaut Compiler avec GCC 7.3 sous Xubuntu 18.04
    avec la nouvelle version XUBUNTU 18.4
    pour la compilation j'ai rencontré un problème


    je ne trouve pas vraiment d'explication , sauf que si je ne met pas cela " dans les options -no-pie" je n'obtient pas un executable ????? mais une lib
    quelqu'un pourrait développer cela svp le compilateur est 7.3 GCC , il parait que le compilateur GCC a été paramétrer avec cela , mais pourquoi ???? là je bute
    quelques explications seraient bienvenus ....

    merci
    deux explications (mais elles ne viennent pas de moi ) mais dans ce cas on perd la notion d'executable ... ????

    Parce que d’une part, tu ne spécifies à aucun moment que tu souhaites avoir un objet partagé lors de l’édition de liens (implicite), d’autre part, l’option -no-pie spécifie que ton binaire sera toujours chargé en mémoire à la même adresse de référence.

    "pie" signifie Position Independent Executable. L’intérêt d’utiliser cette option est de pouvoir, à chaque exécution de ton binaire, le charger à des adresses mémoires différentes (exactement comme pour des objets partagés qui ont besoin d’être relocalisés en mémoire en permanence plutôt que de toujours être chargés à une adresse mémoire fixe, ce qui peut entraîner des problèmes de collisions si deux objets partagés doivent être chargés à la même adresse, par exemple).

    L’intérêt de faire ça pour un binaire exécutable et pourquoi pas seulement pour les objets partagés ? Eh bien il s’agit d’une mesure d’atténuation (je ne sais pas comment traduire correctement "mitigation") d’attaques informatique de type Return Oriented Programming où tu vas corrompre la mémoire de ton binaire pour exécuter un code arbitraire. Et pour exécuter ce code arbitraire, tu as besoin de savoir à quels adresses mémoires chercher les bonnes informations. Et comme avec l’option PIE les adresses ne sont jamais les mêmes à chaque exécution, ça rend l’exploitation d’une vulnérabilité plus compliqué que prévu.

    ou encore ....

    Il semble que GCC soit configuré pour créer des binaires -pie par défaut. Ces binaires sont en réalité des bibliothèques partagées (de type ET_DYN), sauf qu'ils s'exécutent exactement comme un exécutable normal. mais ne sont pas marqué executable donc il faut soit les faire monter avec un lanceur ou dans un terminal si l'on conserve l'option -pie (perso je trouve que l'on aurait pu les marqués comme executable c'est plus simple lors de test etc... mais j'ai peut-etre pas compris)

    j'ai trouvé les paramètres par défaut
    Linker Options
    object-file-name -llibrary -nostartfiles -nodefaultlibs
    -nostdlib -pie -rdynamic -s -static -static-libgcc
    -static-libstdc++ -shared -shared-libgcc -symbolic -T script
    -Wl,option -Xlinker option -u symbol


    comment avez-vous pris ou résolu la chose ..... par exemple le double clik dans thunar sur votre new executable ( -pie) bennnn ça marche pas

  2. #2
    Membre expérimenté

    Homme Profil pro
    Retraite
    Inscrit en
    Octobre 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraite
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 487
    Points : 1 371
    Points
    1 371
    Billets dans le blog
    1
    Par défaut
    message d'ubuntu :
    https://askubuntu.com/questions/911538/ … untu-17-04

    effectivement si vous vous mettez dans le répertoire et vous faite la commande ls-l vous obtiendrez -rwxrwxr-x pour votre programme (bibliothèque partageable) donc exécutable

    mais pour votre browser File (thunar) il vous faudra faire une petite modification

    j'ai trouvé il faut par exemple dans thunar
    allez dans configurer les action personnalisées
    puis ajouter une option avec +
    Nom: --->> RUN
    Description: --->> run programme
    Commande: --->> exec %f
    icon face-monkey wink

    puis dans conditions d'apparition

    décochez fichier texte

    cochez autres fichiers


    bien avec tout cela ne toucher pas vos makefile en mettant -no-pie pour obtenir un exécutable sauf une volonté de votre part.

    De plus j'ai charger nautilus qui lui aussi a ce problème et vous pouvez voir que votre programme est bien exécutable mais déclaré comme bibliothèque partageable
    donc même punition pour nautilus que thunar rajoutez le script.

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

Discussions similaires

  1. Cross-compilation avec GCC 4 sous Windows pour Linux
    Par dourouc05 dans le forum Contribuez
    Réponses: 0
    Dernier message: 08/04/2009, 18h25
  2. compilation avec gcc sous MinGW
    Par mackla dans le forum MinGW
    Réponses: 0
    Dernier message: 09/11/2008, 10h34
  3. compilation avec GCC 3.4.6 sous Debian Etch
    Par meufeu dans le forum Administration système
    Réponses: 1
    Dernier message: 18/10/2008, 03h55
  4. Réponses: 5
    Dernier message: 09/04/2006, 19h02
  5. [débutant]compiler avec gcc sous linux
    Par Ickou dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 10/03/2006, 17h27

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