当前位置: 首页 > news >正文

[Linux开发工具]gcc/g++

C语言文件编译运行

gcc code.c -o mycode

在这里插入图片描述

gcc -o mycode code.c

在这里插入图片描述

预处理 汇编 编译 链接

预处理(进行宏替换/去注释/条件编译/头文件展开)

gcc -E code.c -o code.i

-E ->从现在开始进行程序的编译,当我们 的程序预处理完毕后,翻译工作,就停下来
code.i预处理之后的结果
在这里插入图片描述
在这里插入图片描述
头文件展开:把头文件中相关内容,直接拷贝到我们的源文件中,预处理完毕,就可以不用头文件了
条件编译:对代码进行裁剪(专业版/免费版)
gcc可以对我们的代码进行增删改

编译(生成汇编)

gcc -S code.i -o code.s

-S 从现在开始进行程序的编译,编译完成就停下来

在这里插入图片描述

汇编(生成机器可识别代码)

gcc -c code.s -o code.o

-c从现在开始进行程序的翻译,汇编完成就停下
可重定位目标二进制文件
无法直接执行(没有和库链接)
在这里插入图片描述

链接(生成可执行文件或库文件)

在这里插入图片描述

gcc code.c -o mycode

code.o code.obj可重定义目标文件(重新填写目标文件在库中的地址)
必须提前安装好库+头文件

  1. -Esc翻译过程-ISO文件结尾

库的常见分类

静态库:windows:.lib/Linux:.a(静态链接)
动态库:windows:.dll/Linux.so(动态链接)
库的命名:Linux:libXXX.so.YYY
默认采用动态链接方式编译
动态库/共享库
优点:节省资源
缺点:一旦丢失,所有程序无法执行
静态链接:把你要的方法,拷贝到你的可执行程序中
优点:不依赖任何库
缺点:占据内存资源,加载速度受影响

相关文章:

  • wpf CommandParameter 传递MouseWheelEventArgs参数
  • [Vue]编程式导航
  • 回溯算法详解(Java实现):从组合到排列的全面解析
  • 延时启动windows中程序
  • MARM:推荐系统中的记忆增强突破
  • Cycleresearcher:通过自动化评审改进自动化研究
  • C# 方法(控制流和方法调用)
  • SQL笔记——左连接、右连接、内连接
  • pip命令
  • #Paper Reading# DeepSeek-R1
  • 在 Trae CN IDE 中配置 Python 3.11的指南
  • 修改ollama.service都可以实现什么?
  • 【网络编程】HTTP(超文本传输协议)详解
  • 头歌数据库课程实验(索引与数据库完整性)
  • 计算方法实验五 插值多项式的求法
  • AI超级智能体教程(五)---自定义advisor扩展+结构化json输出
  • FreeRtos实战从入门到精通--任务创建和删除(动态方法)--事了拂衣去,深藏功与名
  • 先知AIGC超级工场,撬动运营效率新杠杆
  • ASP.NET MVC​ 入门与提高指南八
  • (超2万字数详解)C++学习之类与对象
  • 吴清:创造条件支持优质中概股企业回归内地和香港股市
  • 重温经典|中国首部剪纸动画片《猪八戒吃瓜》创作始末
  • 新华每日电讯:上海“绿色大民生”撑起“春日大经济”
  • 郭少雄导演逝世,享年82岁
  • 猎金,游戏,诚不我欺
  • 5名中国公民在美国交通事故中遇难