Professional Documents
Culture Documents
ya que la opcin -c del compilador lo que le dice es que detenga el proceso antes de enlazar, creando los ficheros .o necesarios.
Ejemplos
Tomemos el cdigo C ms simple posible: int main(void) /*Ejemplo*/ { return(0); } Al preprocesarlo tendremos: # 1 "prueba.c" # 1 "<built-in>" # 1 "<command line>" # 1 "prueba.c" int main(void) { return(0); } Vemos que el comentario ha desaparecido. En su lugar aparecen comentarios especficos del preprocesador. Al compilarlo tenemos: .file "prueba.c" .text .globl main .type main, @function main: pushl %ebp movl %esp, %ebp subl $8, %esp andl $-16, %esp movl $0, %eax addl $15, %eax addl $15, %eax shrl $4, %eax sall $4, %eax subl %eax, %esp movl $0, %eax leave ret .size main, .-main .ident "GCC: (GNU) 4.0.3 20051023 (prerelease) (Debian 4.0.2-3)" .section .note.GNU-stack,"",@progbits Un precioso cdigo ensamblador que enseguida convertimos en un ilegible cdigo mquina: ELF4( U)GCC: (GNU) 4.0.3 20051023 (prerelease) (Debian 4.0.2-3) .symtab.strtab.shstrtab.text.data.bss.comment.note.GNU-stack4#!XX,X95E@ #prueba.cmain
Programacin en C/El proceso de compilacin Ese cdigo mquina es el fichero .o que normalmente obtenemos directamente del cdigo C. Finalmente, ese cdigo objeto es enlazado con las libreras necesarias para formar un ejecutable: uUttPTRhhQVhhUSQ[t X[U=t+n_used__libc_start_mainGLIBC_2.0$ii hU)UWVS [ )Eu [^_]&1G;}r [^_]'UWVS
[ )EHt41G9}uD
[^_]USRtCuX[]USP[VX[$ Hp \ Y o$ooGCC: (GNU) 4.0.2 (Debian 4.0.2-2)GCC: (GNU) 4.0.2 (Debian 4.0.2-2)GCC: (GNU) 4.0.3 20051023 (prerelease) (Debian 4.0.2-3)GCC: (GNU) 4.0.3 20051023 (prerelease) (Debian 4.0.2-3)GCC: (GNU) 4.0.2 (Debian 4.0.2-2)GCC: (GNU) 4.0.3 20051023 (prerelease) (Debian 4.0.2-3)GCC: (GNU) 4.0.2 (Debian 4.0.2-2)",\
$$q!y_IO_stdin_used../sysdeps/i386/elf/start.S/ space/debian/glibc/build-area/glibc-2.3.5/ build-tree/glibc-2.3.5/csuGNU AS 2.16.1XF}xgMint\}nOV|/space/debian/glibc/build-area/glibc-2.3.5/ build-tree/i386-libc/csu/crti.S/space/debian/glibc/build-area/glibc-2.3.5/build-tree/glib csuGNU AS 2.16.1f(/space/debian/glibc/build-area/glibc-2.3.5/ build-tree/i386-libc/csu/crtn.S/space/debian/glibc/build-area/ glibc-2.3.5/build-tree/glibc-2.3.5/csuGNU AS 2.16.1%
>
>
4:
I?
T/ ../sysdeps/i386/elfstart.S01:"VWYX init.c^ /space/debian/glibc/build-area/glibc-2.3.5/build-tree/i386-libc/csucrti.S3,W\#,: ,Wdd,,W^ /space/debian/glibc/build-area/glibc-2.3.5/build-tree/i386-libc/csucrtn.Sq /space/debian/glibc /build-area/glibc-2.3.5/build-tree/glibc-2.3.5/csuinit.cshort intlong long intunsigned charlong long unsigned intshort unsigned int_IO_stdin_usedGNU C 4.0.2 (Debian 4.0.2-2) .symtab.strtab.shstrtab.interp.note.ABI-tag.hash.dynsym.dynstr.gnu.version. gnu.version_r.rel.dyn.rel.plt.init.text.fini.rodata.eh_ frame.ctors.dtors.jcr.dynamic.got.got.plt.data.bss.comment. debug_aranges.debug_pubnames.debug_ info.debug_abbrev.debug_line.debug_str#(( 1HH(7
f@
G\
Licencia
Creative Commons Attribution-Share Alike 3.0 Unported //creativecommons.org/licenses/by-sa/3.0/