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

[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.xdnf.cn/news/3618.html

相关文章:

  • LangChain:重构大语言模型应用开发的范式革命
  • 大数据Spark(五十八):Spark Pi介绍
  • 《windows GCC 版本升级到9以上》
  • STM32部分:2、环境搭建
  • 前端面经-VUE3篇--vue3基础知识(二)计算属性(computed)、监听属性(Watch)
  • 会话历史管理——持久化
  • C# 方法(局部变量和局部常量)
  • Java 自旋锁:实现机制与优化策略
  • 软件性能测试报告:办公软件性能如何满足日常工作需求?
  • 第三章 权限维持-linux权限维持-隐藏
  • Wireshark网络抓包工具基础使用教程
  • 在 Python 中,以双下划线开头和结尾的函数(如 `__str__`、`__sub__` 等)
  • C++ unordered_set unordered_map
  • k8s3部署
  • 数字智慧方案5970丨智慧农业大数据服务建设方案(69页PPT)(文末有下载方式)
  • 使用huggingface_hub需要注意的事项
  • VBA快速合并多列单元格
  • 英伟达黄仁勋推荐的深度学习教程
  • Langchain,为何要名为langchian?
  • C语言 指针(3)
  • QT6(31)4.5常用按钮组件:Button,以及例题实现,如何为程序引入图片资源文件,本篇只包括例题程序的界面搭建
  • 树与二叉树完全解析:从基础到应用
  • 使用 Helm 在 EKS 上管理多个 Traefik Ingress 控制器和 ALB 的流量
  • 前端应用开发技术历程的简要概览
  • 第 5 篇:红黑树:工程实践中的平衡大师
  • 如何提升自我情绪管理的能力?
  • cpper 转 java
  • 现代健康养生全攻略
  • 4.2 math模块
  • 镜像和容器的深度介绍和关系