GCC的使用

GCC编译的四个步骤

  1. 预处理。生成 .i 文件 [预处理器cpp]
  2. 将处理后的文件转换成汇编文件 生成文件 .s [编译器egcs]
  3. 将汇编编程目标代码(机器代码)生成 .o 文件 [汇编器as]
  4. 链接目标代码, 生成可执行程序 [连接器ld]
 

常用参数

-c 只进行编译的前三步, 即预处理, 编译和汇编, 也就是它只把程序做成obj文件,最终生成 .o 的obj文件

gcc -c a.cpp

-S 之进行预处理和编译, 即将文件编译成汇编代码. 生成 .s 的汇编代码, 可使用文本编辑器查看

gcc -S a.c

-E 只进行预处理, 不生成文件, 需要将它重定向到一个输出文件中, 这会替换源代码中的#define 和 头文件的内容

gcc -E a.c > a.txt

-o 指定目标名称, gcc 默认编译出来的文件是 a.out

gcc a.c -o a
#指明编译之后输出的文件名为 a

-I (大写的 i ) 指定gcc进行链接的时候的头文件所在的目录(不能是文件)

gcc a.c -I ./include

-Wall 生成所有警告信息
-w 不生成任何警告信息
-O0 -O1 -O2 -O3 编译器优化选项的4个级别, -O0 表示没有优化, -O1 为默认值,-O3 优化级别最高.
-g 编译器在编译的时候生成调试信息.
-ggdb 编译时尽可能生成gdb可用的调试信息.
-l 指明连接时搜索指定的函数库
-L 指明额外的函数库搜索路径

-pipe 使用管道代替编译中临时文件, -pipe 加速编译 gcc -pipe a.c -o a
gcc在处理每一个源文件时, 最终都要生成好几个临时文件才能完成相应的工作, 从而无形中导致处理速度变慢. 使用管道代替编译中的临时文件能够加快在进行大文件编译时的速度, 小文件差异不大

posted @ 2022-05-10 20:21  假装有知识  阅读(105)  评论(0编辑  收藏  举报