GCC
选项 | 选项描述 |
---|---|
-x language | 指定使用的语言(C、C++或汇编) |
-c | 只对文件进行便也和汇编,但不进行连接 |
-S | 只对文件进行编译,但不汇编和连接 |
-E | 只对文件进行预处理,但不编译汇编及连接 |
-o [file1] file2 | 将文件 file2 编译成可执行文件 file1 |
-I dir | 在头文件的搜索路径中添加 dir 目录 |
-L dir | 在库文件的搜索路径中添加 dir 目录 |
-w | 禁止警告信息 |
-pedantic | 严格要求符合 ANCI 标准 |
-Wall | 显示所有警告 |
-g | 加入调试信息以便于调试,GNU 调试器可利用该信息 |
-O0 | 不进行优化处理 |
-O(-O1) | 对编译的代码进行优化 |
-O2 | 比 -O 更高级别的优化 |
-O3 | 更高级别的优化 |
-v | 显示版本 |
-ansi | 只支持 ANSI 标准的 c 语法,该选项将禁止 GUN C 的某些特色,例如 asm 或 typeof关键字 |
-pedantic | 允许发出 ANSI C 标准所列的全部警告信息 |
-pedantic-error | 允许发出 ANSI C 标准所列的全部错误信息 |
-werror | 把所有的警告信息转化为错误信息,并在告警发生时终止编译过程 |
-fPIC | 生成使用相对地址与位置无关的目标代码.然后通常使用 gcc 的-static 选项从该 PIC 目标文件生成动态库文件 |
-static | 使用静态链接的方式 |
-shared |
|
gcc编译流流程
- 预处理器 cpp 完成宏的求值、条件编译以及一些需要吧代码传递到编译器前的工作.
- 编译器 gcc gcc -S 将源代码编译成汇编代码
- GNU 汇编器 as as 处理汇编代码,产生目标文件(二进制文件)
- GNU 连接器 ld ld 将程序的各个模块组合起来产生最后的可执行文件
- 文件处理器 ar 可以用 ar 建立静态库,把几个小文件组成一个大文件.
- 库显示 ldd 可以显示一个可之心文件运行时需要的一些共享库.是 Library Dependency Display 的缩写
gcc :