Extension de fichier par défaut de l’exécutable créé par g ++ sous Cygwin vs Linux

J’ai effectué la plupart de mes travaux sur VisualStudio et n’ai pas beaucoup d’expérience avec gcc ou g ++. Quand j’ai essayé de comstackr un (ex. Aprogram.cpp) ce matin sur mon ordinateur avec cygwin, j’ai eu (aprogram.exe) alors que j’essayais de comstackr la même chose sur ma machine Ubuntu, j’ai (aprogram) sans extension . Je me demande simplement si quelqu’un a la gentillesse de me dire pourquoi. Cette question est juste par curiosité. 🙂

Merci d’avance!

EDIT: (du commentaire de Jimmy) g ++ sous Cygwin par défaut à .exe

    C’est simple: sous UNIX, vous n’avez pas besoin des extensions steenkin ‘ . En fait, une “extension” comme .c n’est qu’une convention de nommage commode; contrairement à Windows, le système de fichiers voit le nom du fichier comme une chaîne, .c et tous.

    Pour un très bon moment, comstackz un programme C avec aucun indicateur -o . Votre exécutable sera toujours affiché — nommé le nom par défaut pour les exécutables: a.out .

    C’est juste une convention de nommage. Sous Unix / Linux, les exécutables n’ont pas d’extension, mais juste un bit d’exécutable.

    .exe est une application de Windows. Unix ne se soucie pas des extensions. L’exécutabilité est basée sur les métadonnées du fichier ainsi que sur le contenu du fichier. g ++ via cygwin n’est pas vraiment une application Windows, il porte donc ses racines unix.

    Si vous vous demandez comment exécuter le programme sous UNIX, naviguez simplement dans le dossier contenant le programme que vous souhaitez exécuter (programme) et tapez

     ./aprogram 

    Cela indiquera au shell que vous souhaitez exécuter ‘aprogram’ dans le répertoire actuel.

    Les exécutables n’ont aucune extension dans le monde Unix, car ils sont destinés à être exécutés dans le shell. Imaginez ce qui suit:

     cat.bin file.txt | less.bin 

    C’est moche! Unix utilise des octets magiques au début de chaque fichier pour détecter le type de fichier. Pour le format binary par défaut, appelé ELF, il existe un mot de 4 octets 7f 45 4c 46 au début. Ce n’est pas possible pour tous les formats de fichiers. Considérons le code C ou le code Java. Ils peuvent tous deux commencer par des commentaires, et peuvent être rendus exactement les mêmes. Donc, vous devez toujours utiliser des extensions de nom de fichier, et c’est une bonne chose lorsqu’elles sont utilisées lorsque cela est approprié.

    Si vous voulez que la sortie ait une extension .exe, utilisez simplement le drapeau -o pour le faire (par exemple -o aprogram.exe). Cela fonctionnera très bien sous Linux de toute façon.

    La possibilité d’exécuter un programme sous linux est basée sur les permissions du fichier (voir chmod ). Les permissions d’exécution seront automatiquement définies par gcc / g ++.

    ls / bin Il y a beaucoup de programmes et tous sans extension 🙂

    ls -l / bin vous verrez que tous ont le drapeau + x pour les marquer comme exécutables.

    Honnêtement, il suffit de les .elf . Et si vous n’êtes pas sûr du type de fichier, exécutez:

     $ file MyFile 

    Cela vous dira quel est le contenu du fichier, et vous pouvez choisir un nom de cette façon, mais ce n’est pas nécessaire – ce n’est que cosmétique si vous avez été habitué à des extensions de la vie.