GCC的编译过程及其各选项的功能

使用GCC,编译过程分为4个阶段。

预处理,适当编译,汇编,链接。

在编译过程中,可以通过手工方式重新创建这些步骤。

第一步:运行预处理器,使用-E选项告诉GCC在处理后停止编译。

通过"Hello world!"的简单例子来说明,定义main.c

#include <stdio.h>

int main()

{

  printf("Hello world!\n");

  return 0;

}

gcc -E main.c -o main.cpp(预处理结构保存在此。)

查看main.cpp文件就会发现头文件内容已经插入到文件里了。

然后将main.cpp 编译成目标文件。

gcc -x cpp-output -c main.cpp -o main.o

-x选项告诉GCC重指定的步骤开始编译。这里也就是编译器处理后的源代码(cpp-output).

最后是链接目标文件,生成可执行文件。

gcc main.o -o main。

以上四步可以用一个命令实现:gcc main.c -o main。

GCC的命令行选项

-o FILE                            指定输出文件名,在编译时,这一选项不是必须的,如果不指定,默认文件名是a.out。

-c                                     只编译不链接。

-DFOO=BAR                 命令行定义预处理宏FOO,其值为BAR。

-IDIRNAME                    将DIRNAME加入到包含文件的搜索目录列表中。

-lDIRNAME                    将DIRNAME加入到库文件的搜索目录列表中。

-static                             链接静态库,默认情况是链接共享库。

-lFOO                             链接名为libFOO的函数库。

-g                                    在可执行程序中包含标准调试信息。

-ggdb                             在可执行程序中包含只有GNU debugger(gdb)才能识别的大量信息。

-O                                   优化编译过的代码。

-w                                  关闭所以警告,建议不要使用此项。

-Wall                             允许发出GCC能提供的所有有用的警告。也可以用-W{warning}来标记指定的警告。

-werror                         将所有警告转换为错误,以在警告发生时终止编译过程。

-v                                   显示在编译过程中,每一步用到的命令。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值