[英]C programming basics: Why can't I see the .o file after I compile my .c file with gcc
[英]What I get after I compile the c file?
我用gcc
编译了hello.c
:
dele-MBP:temp ldl$ ls
a.out hello.c
现在,当我爱cat a.out
:
$ cat a.out
??????? H__PAGEZERO?__TEXT__text__TEXTP1P?__stubs__TEXT??__stub_helper__TEXT???__cstring__TEXT??__unwind_info__TEXT?H??__DATA__nl_symbol_ptr__DATA__la_symbol_ptr__DATH__LINKEDIT ?"? 0 0h ? 8
P?
/usr/lib/dyldס??;K????t22
?*(?P
8??/usr/lib/libSystem.B.dylib&`)h UH??H?? ?E??}?H?u?H?=5??1ɉE??H?? ]Ð?%?L?yAS?%i?h?????Hello
P44?4
那里显示了凌乱的代码。
我想知道什么类型的a.out
吗? 是assembly language
吗? 如果是为什么会有那么多???
或%%%
?
有几种中间文件格式,具体取决于您使用的编译器系统。 大多数系统使用以下步骤,此处以GCC为例显示:
gcc -E test.c -o test.i
),但是严格来说,这是在编译之前 gcc -S test.c -o test.s
) gcc -c test.c -o test.o
) gcc test.c -o test
) 仅前两个步骤生成了可以由cat
或在文本编辑器中读取的文本文件。 这是BTW深入了解的宝贵资源。 但是,您可以使用objdump
查看其他格式中包含的大多数信息。 请阅读其文档 。
每个步骤还执行之前的所有步骤。 因此( gcc test.c -o test
)在临时文件中生成程序集源文件和目标文件,这些文件会自动删除。 您可以通过为GCC提供-v
选项来观看该过程。
使用gcc --help
查看一些切入点,以进行进一步的研究。
关于这个过程,还有很多要说的,但它会写一本书。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.