linux下gcc编译c⽂件⽣成可执⾏⽂件的四个步骤Linux下gcc编译c⽂件为可执⾏⽂件分为四个步骤: 分别是 预编译、编译、汇编、链接。
1、预编译( ⽣成 hello.i ⽂件)
预编译的处理规则:
1. 将所有的 “#define” 删除,并展开所有的宏定义。
2. 处理所有的条件预编译指令,⽐如:" #if #ifdef #elif #else #endif "。
3. 处理所有的 “#include” 预编译指令。
4. 删除所有的注释 “//” 、 “/* */”。
5. 添加⾏号和⽂件名标识,以便编译时产⽣的⾏号信息以及⽤于编译错误或警告时能够显⽰⾏号。
6. 保留所有的 “#pragma” 编译器指令。
$ gcc -E hello.c -o hello.i 或者 $ gcc hello.c > hello.i
2、编译(⽣成汇编代码 hello.s)
linux下gcc编译的四个步骤编译过程是编译器gcc把预处理完的⽂件进⾏词法分析、语法分析、语义分析及优化后⽣成相应的汇编代码⽂件。
编译过程可以使⽤如下命令:
$ gcc -S hello.i -o hello.s 或者 $ gcc -S hello.c -o hello.s
都可以得到汇编输出⽂件 hello.s
3、汇编(⽣成hello.o⽂件)
汇编是 汇编器as 把汇编代码转变成中间⽬标⽂件。
汇编过程可以使⽤如下命令:
$ gcc -c hello.s -o hello.o 或者 $ gcc -S hello.c -o hello.o
可以得到中间⽬标⽂件
4、链接(⽣成可执⾏程序)
链接器 ld:负责将程序的⽬标⽂件与所需的所有附加的⽬标⽂件连接起来,附加的⽬标⽂件包括静态连接库和动态连接库。 链接是链接器ld把中间⽬标⽂件和相应的库⼀起链接成为可执⾏⽂件。
$ gcc hello.o -o hello
如果前⾯使⽤的是$ gcc hello.c命令,默认会产⽣⼀个a.out 的可执⾏⽂件,使⽤命令./a.out执⾏改可执⾏⽂件。
注:上述步骤可以放在⼀起执⾏
$ gcc hello.c -o hello
./hello
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论