当前位置: 首页 > 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
默认采用动态链接方式编译
动态库/共享库
优点:节省资源
缺点:一旦丢失,所有程序无法执行
静态链接:把你要的方法,拷贝到你的可执行程序中
优点:不依赖任何库
缺点:占据内存资源,加载速度受影响

http://www.dtcms.com/a/169911.html

相关文章:

  • 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++学习之类与对象
  • D. 例题3.2.2 整数划分问题
  • python进阶(2)二进制
  • 【分享】Winlator 10.0[特殊字符]虚拟电脑 可玩游戏办公[特殊字符]
  • mvvm 如何 实现 MultiBinding 与转换器
  • 数据结构*队列
  • python下载
  • Java从入门到精通 - Java语法
  • DeepSeek与MySQL:开启数据智能新时代
  • mysql 云服务远程linux创建数据库
  • 阿里巴巴Qwen团队发布了新一代多模态模型Qwen2.5-Omni-3B