前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GCC工具的具体使用

GCC工具的具体使用

作者头像
乱码三千
发布2021-08-24 14:52:02
5070
发布2021-08-24 14:52:02
举报
文章被收录于专栏:乱码三千乱码三千

编译工具链

高级语言翻译成机器语言不是一步到位的,以C语言为例,通常要经历以下四个步骤:

代码语言:javascript
复制
预处理--->编译--->汇编--->连接

源代码--->汇编代码--->目标代码--->可执行程序

每一步都需要使用不同的工具,比如源代码需要借助编译工具翻译成汇编代码,汇编代码需要借助汇编器翻译成目标代码,最后还要借助连接器帮忙整理汇总, 那么这些个工具集合到一块就叫做工具链

GCC工具链

由GNU提供的一整套的工具集,这套工具集中包含了汇编器,编译器和链接器,二进制转换,调试工具等

通过GCC,我们可以一步完成源码到可执行文件的编译, 也可以单步独立进行,方便程序员获取中间代码代码,进行调试

GCC常用命令选项

假设只编译单个源文件test.c

无选项编译

在当前目录下直接生成可执行文件,默认名称为a.out

选项-o

在当前目录下生成名为test的可执行文件

选项-E

在当前目录下生成名为test.i的预处理文件

选项-S

在当前目录下生成名为test.s的汇编文件,将源码转成汇编代码

选项-c

在当前目录下生成名为test.o的目标文件

选项-O数字

在当前目录下生成名为test的可执行文件,并且使用编译优化级别1编译程序。可选级别为1~3,级别越大优化效果越好,但编译时间越长。

多文件编译

比如一个汇编文件aaa.s一个C源文件test.c:

方式一 多文件同时编译

代码语言:javascript
复制
gcc aaa.s test.c -o bbb

方式二 多文件分开编译

代码语言:javascript
复制
gcc -c aaa.s  //生成aaa.o

gcc -c test.c  //生成test.o
代码语言:javascript
复制
gcc  test.o aaa.o -o test

方式三 编写makefile文件进行编译

代码语言:javascript
复制
# 我是注释
SRC=aaa.s test.c
main: $(OBJS)   #指定需要生成的文件名称以及相应的依赖关系 
        gcc -o main $(SRC) #生成所需要的指令
代码语言:javascript
复制
# cs-make

以上三种方法相比较,第一中方法编译时需要所有文件重新编译,而第二种方法可以只重新编译修改的文件,未修改的文件不用重新编译 ,第三种方法适用于文件较多依赖关系复杂的工程编译

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-08-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 乱码三千 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 编译工具链
  • GCC工具链
  • GCC常用命令选项
  • 多文件编译
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档