大家好,又见面了,我是你们的朋友全栈君。
1.GCC编译过程(原理如下,使用命令请见2)
从 hello.c 到 hello(或 a.out)文件, 必须历经 hello.i、 hello.s、 hello.o,最后才得到 hello(或a.out)文件,分别对应着预处理、编译、汇编和链接 4 个步骤,整个过程如图所示。
这 4 步大致的工作内容如下:
(1)预处理,C 编译器对各种预处理命令进行处理,包括头文件包含、宏定义的扩 展、条件编译的选择等,后缀是 .i文件。
test.c是c代码,预处理参数:-E ;另起名称:-o
代码语言:javascript复制gcc -E test.c –o test.i #得到 .i文件
(2)编译,将预处理得到的源代码文件,进行“翻译转换”,产生出机器语言的目标 程序,得到机器语言的汇编文件,后缀是 .s文件。
编译参数:-S
代码语言:javascript复制gcc -S test.i #得到 .s文件
(3)汇编,将汇编代码翻译成了机器码,但是还不可以运行,后缀是 .o文件。
编译参数:-c
代码语言:javascript复制gcc -c test.s #得到 .o文件
(4) 链接,处理可重定位文件,把各种符号引用和符号定义转换成为可执行文件中 的合适信息,通常是虚拟地址,后缀是 .out 文件或者可执行文件
代码语言:javascript复制gcc hello.o #得到 .out文件
2.GCC编译使用命令
最简单使用命令
代码语言:javascript复制gcc test.c #在gcc命令紧跟test源文件名,会有一个 .out 文件
gcc test.c -o test01.out #通过 -o 选项来自定义文件名test01.out文件
gcc test.c -o #/home/user/local/test.out # 在路径/home/user/local/下生成.out文件
./test.out #运行
参考:
文章一
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/182360.html原文链接:https://javaforall.cn