GCC mode verbose output explication
Je suis nouveau sur linux. Quelqu'un peut-il m'expliquer la suite verbose mode de sortie pour mon programme "hello world"? Aussi, quels sont les fichiers crt1.o
, crti.o
, crtend.o
, crtbegin.o
et crtn.o
et lc
et lgcc
faire? Toutes les autres notes explicatives des liens sont également les bienvenus.
$ gcc -v hello.c
Reading specs from /usr/lib/gcc-lib/i686/3.3.1/specs
Configured with: ../configure --prefix=/usr
Thread model: posix
gcc version 3.3.1
/usr/lib/gcc-lib/i686/3.3.1/cc1 -quiet -v -D__GNUC__=3
-D__GNUC_MINOR__=3 -D__GNUC_PATCHLEVEL__=1
hello.c -quiet -dumpbase hello.c -auxbase hello -Wall
-version -o /tmp/cceCee26.s
GNU C version 3.3.1 (i686-pc-linux-gnu)
compiled by GNU C version 3.3.1 (i686-pc-linux-gnu)
GGC heuristics: --param ggc-min-expand=51
--param ggc-min-heapsize=40036
ignoring nonexistent directory "/usr/i686/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
/usr/include
/usr/lib/gcc-lib/i686/3.3.1/include
/usr/include
End of search list.
as -V -Qy -o /tmp/ccQynbTm.o /tmp/cceCee26.s
GNU assembler version 2.12.90.0.1 (i386-linux)
using BFD version 2.12.90.0.1 20020307 Debian/GNU
Linux
/usr/lib/gcc-lib/i686/3.3.1/collect2
--eh-frame-hdr -m elf_i386 -dynamic-linker
/lib/ld-linux.so.2 /usr/lib/crt1.o /usr/lib/crti.o
/usr/lib/gcc-lib/i686/3.3.1/crtbegin.o
-L/usr/lib/gcc-lib/i686/3.3.1
-L/usr/lib/gcc-lib/i686/3.3.1/../../.. /tmp/ccQynbTm.o
-lgcc -lgcc_eh -lc -lgcc -lgcc_eh
/usr/lib/gcc-lib/i686/3.3.1/crtend.o
/usr/lib/crtn.o
OriginalL'auteur Gomathi | 2012-11-18
Vous devez vous connecter pour publier un commentaire.
La première partie est la version et la configuration des données pour le pilote du compilateur (c'est le
gcc
binaire, qui n'est pas réellement le compilateur lui-même):Puis il imprime la commande qu'il utilise pour appeler le réel compilateur,
cc1
:Et
cc1
imprime c'est la version et de l'info de config.Puis
cc1
vous indique quels répertoires, il va rechercher les fichiers à inclure.Le compilateur est maintenant complète, donc
gcc
vous indique la commande assembleur.Et l'assembleur,
as
, donne sa version info.L'assembleur est désormais chose faite
gcc
donne l'éditeur de liens de commande. C'est à l'aide decollect2
comme intermédiaire pour le réel de l'éditeur de liensld
, mais ce n'est pas important ici.L'éditeur de liens ne donne pas des résultats détaillés (essayez
-Wl,-v
), donc c'est ça.La "crt" fichiers de dire "C RunTime". Ils sont de petites sections de code, inséré au début de votre programme, et à la fin. Ils prennent soin d'initialiser vos variables globales, de tas et de la pile. Ils appellent
atexit
fonctions après le retour demain
. Et un peu plus encore.Espère que ça aide.
L'éditeur de liens ne donnent des résultats détaillés si vous définissez
-Wl,--verbose
. Il permet d'imprimer les tentatives visant à acquérir toutes les entrées, y compris les bibliothèques.OriginalL'auteur ams