/ / Comment compiler le programme c au format elf? [fermé] - c, linux, elf

Comment compiler le programme c au format elf? [fermé] - c, linux, elf

Je suis nouveau sur Linux. J'essaie de compiler mon programme c dans un fichier elf afin de pouvoir utiliser read elf pour trouver des informations sur la fonction, etc. Chaque fois que j'essaye d'utiliser le readelf avec le fichier de sortie (après avoir compilé mon programme c), cela signifie que ce n'est pas un fichier elf. Alors, comment compiler mon programme C pour le compiler dans un fichier elf. Ou peut-être que je ne comprends pas? J'utilise gcc pour compiler

Voici ma ligne de commande pour la compilation:

gcc -Wall main.c  a.out

et ensuite readelf -a a

Ok, je l'ai donc compilé avec gcc -o test -Wall main.c et il a compilé sans erreur et ensuite fait le readelf avec: readelf -a test et il dit toujours que ce n’est pas un elfe et quand je fais un fichier, il arrive avec: PE32 + exécutable (console) x86-64, pour MS Windows , alors qu'est-ce qui se passe ici?

Réponses:

4 pour la réponse № 1

Essayons:

gcc -Wall test.c a.out
gcc: error: a.out: No such file or directory

c’est un indice fort que quelque chose a mal tourné ... gcc ne produit pas a.out fichier (et si le a.out Le fichier existe déjà, le passer comme ceci indique à gcc d'essayer de le compiler, et comme ce n'est pas un fichier texte / c valide, vous obtiendrez a.out: file not recognized: File truncated et ça finira mal aussi).

Vous devez spécifier la sortie exécutable avec -o changer (si vous avez besoin a.out sur unix / linux, juste don "t taper)

gcc -Wall test.c

créera a.out executable (.elf) si aucune erreur de compilation n’est trouvée.

gcc -o myexe -Wall test.c

permet de changer le nom de l'exécutable.

EDIT: vous êtes ne pas sous Linux mais Cygwin (sur les fenêtres). Cela ne rend pas la réponse ci-dessus invalide, mais Cygwin crée des les fenêtres exécutables, pas .elf des dossiers. Vous ne pouvez pas créer .elf fichiers en utilisant gcc il (sauf si vous obtenez un compilateur croisé Windows -> Linux s'il existe)

readelf La commande est présente dans la distribution Cygwin, mais ne lira pas les programmes compilés avec gcc. Il peut analyser .elf fichiers de Linux ou d’autres systèmes utilisant ce format exécutable, mais certainement pas le format Windows PE.