技术交流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. 开始做事了...............
  2. 极值滤波matlab,[转载]转:Matlab信号提取、频谱分析、滤波、阈值设定、寻找极值点...
  3. Java进阶知识-数组类型
  4. 关于eclipse解压安装的问题
  5. 十二省联考题解 - JLOI2019 题解
  6. word2007鼠标不好用
  7. python excel 数据匹配实现vlookup功能_如何用python实现excel中的vlookup功能?
  8. win10推送_Win10推送更新升级Edge浏览器:用户发现电脑速度因此变慢
  9. 究极探秘!你知道程序员最喜欢做的四件事是什么吗?
  10. 微信淘宝等平台要互通!?腾讯阿里字节回应
  11. linux 乌班图 lnmp环境搭建
  12. python制动化之路
  13. Java多线程(四)——多线程数据隔离与共享
  14. Here we are 团队简介
  15. 一天一种设计模式之七-----装饰模式
  16. Windows7 原版下载大全
  17. Restlet 短连接问题
  18. linux 打包大文件,tar打包处理大文件的解压缩方法
  19. [论文阅读] LCC-NLM(局部颜色校正, 非线性mask)
  20. STM8 fHSI和 fCPU分频

热门文章

  1. 虚拟机与Docker有何不同?
  2. android编译系统Android.mk使用详解
  3. html基础:定义 图片 表格
  4. Linux 小知识翻译 - 「命令行的提示符」
  5. 第三方支付接口的技术比较研究
  6. Cocos2d中从场景切换到UIViewController视图方法总结
  7. GPRS、EDGE、CDMA1X、WCDMA、EVDO、EVDV速度性能大比较
  8. 新能源汽车会是一阵风吗
  9. 三藏一面:为什么要用 NoSQL
  10. 一文揭秘领域驱动设计(DDD):领域和子域!