技术交流QQ群:1027579432,欢迎你的加入!

1.gcc工作流程

  • 预处理:–E

    • 宏替换
    • 头文件展开
    • 注释去掉
    • xxx.c文件变成xxx.i文件(实际上也是c文件)
  • 编译(此步骤时间最长):–S
    • xxx.i文件变成xxx.s文件(汇编文件)
  • 汇编:-c
    • xxx.s文件变成xxx.o文件(二进制文件)
  • 链接:
    • xxx.o文件变成xxx文件(可执行)
  • gcc hello.c:默认编译生成的可执行文件名为a.out;
  • gcc hello.c -o hello:指定编译生成的可执行文件名为hello;
  • 只有编译步骤是gcc完成的,其余步骤都是gcc调用其他工具(如预处理器、链接器等)实现的

2.gcc常用参数

  • -v/–version: 查看gcc版本
  • -I:编译的时候,指定头文件的路径。例如:gcc sum.c -I ./include/ -o sum
  • -c:将汇编文件生成二进制文件,得到了一个.o文件。例如:gcc sum.c -c -I ./include/
  • -o:指定生成的文件的名字。例如:gcc sum.c -c -I ./include/ -o aa.o
  • -g:gbd调试的时候需要增加的参数。例如:gcc hello.c -o app1 -g
  • -D:在编译的时候指定一个宏,使用场景:测试程序的时候使用。例如:gcc sum.c -I ./include/ -D DEBUG -o app
  • -Wall:添加警告信息。例如:gcc sum.c -I ./include/ -D DEBUG -o app1 -Wall
  • -On:优化代码,n是优化级别:1,2,3。

gcc编译工具的使用相关推荐

  1. Linux中GCC编译工具集中个软件的用途、gcc的简单编译以及ELF文件格式

    文章目录 一.gcc编译工具集中各软件的用途 1.1 GCC 1.2 Binutils 1.3 C运行库 二.简单编译 2.1 代码编译过程 2.2 多个程序文件的编译 2.3 检错 2.4 库文件连 ...

  2. Linux编程之GCC编译工具实战-夏曹俊-专题视频课程

    Linux编程之GCC编译工具实战-6075人已学习 课程介绍         本课程使得学员能够学会在linux中如何编译C/C++程序,使用GCC工具如何编译静态库,动态库,如何配置运行动态库. ...

  3. GCC编译工具集和nasm编译器

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一.gcc编译工具集 1.1gcc工具有哪些 1.2gcc编译过程 1.2.1.这里我们是使用一个hello.c文件进行演 ...

  4. gcc编译工具常用命令以及汇编语言

    文章目录 一.Linux GCC常用命令 二.GCC编译器背后的故事 总结 一.Linux GCC常用命令 1 新建一个文件test,代码如下: #include <stdio.h>int ...

  5. 如何把gcc编译工具使用到linux全局

    转载来自朱老师笔记 总结: gcc的安装,怎么安装,在linux下把压缩包放入共享文件夹中,拷贝到用户目录下,一般是/local/bin中(要创建一个ARM文件夹) 解压缩gcc压缩包 echo $P ...

  6. Tips--windows系统下gcc编译C文件为so共享库

    windows系统下gcc编译C文件为so共享库 1. windows系统安装gcc编译工具 2. 利用gcc编译多个c文件 3. 利用python工具验证生成的so共享库 1. windows系统安 ...

  7. MDK编译过程及ARM编译工具链

    欢迎加入[Linux C/C++/Python社区]一起探讨和分享Linux C/C++/Python/Shell编程.机器人技术.机器学习.机器视觉.嵌入式AI相关领域的知识和技术. MDK编译过程 ...

  8. 如何用gcc编译C代码

    如何用gcc编译C代码 1.编写 hello word 的两种方法--现成编译器 这个方法大家都经常用,比如DEVCpp,Visual Studio 2017,Visual C++ 6.0等. 简单的 ...

  9. gcc mips64编译后无法运行在octeon上运行_编译工具链

    软件的编译过程由一系列的步骤完成,每一个步骤都有一个对应的工具.这些工具紧密地工作在一起,前一个工具的输出是后一个工具的输入,像一根链条一样,我们称这些工具为工具链. Linux系统上,通常只需要使用 ...

最新文章

  1. 前端学习(749):函数两种声明方式
  2. Python 两种装饰器
  3. git获取管理员权限 windows,windows下git怎么管理权限
  4. 60-10-050-命令-kafka-broker-api-versions.sh
  5. IIS------项目配置到IIS后报500错误
  6. 51nod 1680区间求和 (dp+树状数组/线段树)
  7. 可以下载MapInfo地图吗?
  8. 双层PDFmaker
  9. 存在哪些域名后缀种类?哪个后缀比较好?
  10. 谷歌邮箱的注册以及GEE的注册使用教程
  11. 基于矩阵分解的PCA 白化ZCA白化
  12. 企企通SRM:由“制造”到“智造”,高科技电子行业如何打造智慧供应链?
  13. 报表数据源之Hadoop
  14. 【优动漫 PAINT应用篇】绘制插画之上墨线
  15. QTableView中添加icon
  16. Google 新系统 Fuchsia 概览和浅析
  17. 记一次greenplum集群数据库连接慢的问题定位
  18. Action Chains类 使用鼠标操作使用方法
  19. 关于在《python编程从入门到实践》书中练习“外星人大战”报错“AttributeError: ‘AlienInvasion‘ object has no attribute ‘blit‘”
  20. Meta AI:让手绘小人动起来

热门文章

  1. python设计模式(十三):解释器模式
  2. Git 常用命令总结
  3. struts.xml web.xml配置正常,访问action时出现404
  4. 一次插拔U盘引发的学案
  5. 【基础概念】 Redis简介和面试常见问题
  6. ASP.NET Core开发之HttpContext
  7. Linux之make的用法讲解
  8. .NET读写Excel工具Spire.Xls使用(1)入门介绍
  9. 微软MSIT部门招Sr SDE for FSS team
  10. 红牛开发板模拟器简要说明_V1.0