一、编译流程
一个C程序从源代码到可执行程序一共有四个过程:预处理->编译->汇编->链接
| 次序 | 执行流程 | 功能 | GCC命令 |
|---|---|---|---|
| 1 | 预处理 | 展开头文件、宏替换、去掉注释、条件编译 | gcc - E main.c - o main.i |
| 2 | 编译 | 检查语法,生成汇编程序 | gcc - S main.i - o main.s |
| 3 | 汇编 | 汇编代码转换为机器码 | gcc - c hello.s - o main.o |
| 4 | 链接 | 链接各个文件一起生成可执行文件 | gcc main.o - o main |
1. 预处理
预处理就是在C语言源文件和头文件中的所有以#开始的行,都属于预处理的范畴,预处理命令一般有一下几种:
| 类别 | 符号 | 主要作用 |
|---|---|---|
| 宏定义 | #define,#undef,#include |
基本上即使做字符替换 |
| 条件编译 | #if,#else,#elif,#endif,#ifdef,#ifndef |
和C语言的分支语句一样,不过这个告知编译器的 |
| 信息输出 | #error,#warning |
分别输出错误级别信息和警告级别信息 |
| 设置 | #line,#pragma |
向编译器发送一些指令 |
二、命令选项
o小写
指定生成(输出)文件名称,如: gcc -o helloworld helloworld.c.

本文详细介绍了GCC编译C/C++程序的过程,包括预处理、编译、汇编和链接四个步骤。讨论了GCC命令选项,如指定输出文件、优化级别、库文件路径、宏定义等,并给出了生成可执行文件和动态、静态库文件的示例。
最低0.47元/天 解锁文章
2473

被折叠的 条评论
为什么被折叠?



