#1 Le 05/06/2018, à 12:58
- berdal84
Binaires compilés avec g++ non executables via un double clic
Bonjour,
Je suis passé d'Ubuntu 16.04 LTS à 18.04 LTS récemment. J'ai formaté mon disque principal, donc l'installation est bien propre.
J'ai un soucis pour exécuter les fichiers binaires compilés avec g++. Si je peux les exécuter via la ligne de commande ( ./nodable.bin ), il m'est plus possible de le faire en double cliquant sur l'icone du fichier, d'ailleurs l'icone n'est plus un losange mais une icone de type fichier texte).
Si je tente un double clic, le système me dit "Impossible d'afficher nodable.bin , le type du fichier est inconnu".
Voici ce que me retourne file :
berdal84@berdal84-Precision-WorkStation-690:~/Nodable/bin/linux64$ file nodable.bin
nodable.bin: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=d092cccf6afd7d07055dff7919a264582202f4a5, not stripped
EDIT: Voici ce que retourne mimetype:
berdal84@berdal84-Precision-WorkStation-690:~/Nodable/bin/linux64$ mimetype nodable.bin
nodable.bin: application/octet-stream
J'ai également compilé un autre programme pensant que peut être cela venait de mon makefile mais le résultat est le même la compilation produit un fichier non double clicable.
Avez vous une idée pour résoudre ce problème ?
Merci par avance.
Dernière modification par berdal84 (Le 05/06/2018, à 13:07)
Hors ligne
#2 Le 05/06/2018, à 13:48
- J5012
Re : Binaires compilés avec g++ non executables via un double clic
clic droit sur fichier → puis onglet "permissions" → puis coche sur "exécution..."
l'extension point bin n'est pas necessaire pour l'execution ...
Hors ligne
#3 Le 05/06/2018, à 14:39
- berdal84
Re : Binaires compilés avec g++ non executables via un double clic
Merci pour ta réponse J5012, mais tu n'as pas lu mon message avec attention.
L'autorisation d'exécution est déjà cochée puisque je peux exécuter le programme via un terminal. Cela est du au fait que le compilateur (g++) génère un fichier ayant le flag d'exécution activé.
L'extension bin n'est pas nécessaire d'accord, mais je ne vois pas en quoi est-ce un problème de l'avoir ajoutée ?
Ceci dit, depuis le post de ma question j'ai compris un peu plus ce qui se passe. Dans Ubuntu 18.04 (peut être même dans la 17.x aussi) le compilateur gcc active par défaut le flag -pie (pour Position Independent Executable). Ceci pour des raisons de sécurité.
Cela a pour effet de produire un exécutable que nautilus ne "peut" pas lancer. Je met ça entre guillemets car il semble que la communauté gnome ne qualifie pas cela comme un bug : https://bugzilla.gnome.org/show_bug.cgi?id=737849
Par conséquent, soit je désactive le flag pie (avec -no-pie) soit j'exécute mon programme en passant par la ligne de commande. Point de vue sécurité mieux vaut opter pour la seconde solution il me semble. Mais du coup je ne peux pas mettre mon programme en raccourci dans mon launcher...
EDIT: En créant un petit script shell exécutable, cela me permet de lancer mon binaire via un double clic. Contenu du script (nodable.sh)
./nodable.bin
Dernière modification par berdal84 (Le 05/06/2018, à 14:44)
Hors ligne
#4 Le 07/06/2018, à 23:44
- J5012
Re : Binaires compilés avec g++ non executables via un double clic
script lanceur , ligne exec :
exec = /chemin-absolu/Nodable.bin
devrait fonctionner normalement ...
Dernière modification par J5012 (Le 07/06/2018, à 23:47)
Hors ligne
#5 Le 07/06/2018, à 23:51
- Roschan
Re : Binaires compilés avec g++ non executables via un double clic
Plutôt que de vous compliquer la vie :
menu de l'application -> préférences -> comportement -> fichiers exécutables, et choisit l'option que tu préfères
Hors ligne