博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GCC的编译过程及其各选项的功能
阅读量:2352 次
发布时间:2019-05-10

本文共 870 字,大约阅读时间需要 2 分钟。

使用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                                   显示在编译过程中,每一步用到的命令。

转载地址:http://mvrvb.baihongyu.com/

你可能感兴趣的文章
spring框架中5种自动装配模式介绍
查看>>
如何学习Spring框架?有哪些建议?
查看>>
Java程序员烂大街了吗?是,也不是
查看>>
为什么学编程大部分人选Java编程语言?
查看>>
GL_SETS_OF_BOOKS 帐簿表
查看>>
RMAN参考使用手册(转)
查看>>
解决WEB ADI打开EXCEL文档时一直停留在"Your document is being created"界面的问题
查看>>
为什么删除文件后磁盘空间还是不变
查看>>
VNC server简单配置vnc
查看>>
win7 安装的offic2007
查看>>
rman本库恢复性测试
查看>>
IBM TSM磁带管理操作小记一则
查看>>
ORA-00258: NOARCHIVELOG 模式下的人工存档必须标识日志
查看>>
Java调用bat文件
查看>>
此责任无可用函数
查看>>
java获取数字和汉字
查看>>
excel Option Explicit webadi
查看>>
ICX错误
查看>>
windows Xp NTLDR is missing
查看>>
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
查看>>