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

C和指针笔记2——编译、链接

.out 和 .exe都是可执行文件,前者是Linux系统下,后者是window系统下

linux下的编译-链接常见场景cc

1、一般如果cc -c xxx 就是只编译为目标文件,cc xxx 可以是编译+链接或者是链接
对于源文件,编译产生目标文件(.o),链接后才产生可执行文件(.out)

cc main.c -o main.o//编译、链接一个源文件
//1、生成一个可执行文件main.out,未指定则命名为a.out
//2、中间产生的目标文件 main.o被自动删除
cc -c main.c//仅编译一个源文件,生成目标文件main.o
cc main.c test.c p.c //编译、链接多个源文件
//1、中间得到的目标文件不会被删除
cc main.c
cc main.o test.o p.o
//连接几个目标文件为可执行文件

1、最大的好处是编译和连接可以分开,对于一个大型项目,如果只修改了几个源文件,无需对所有源文件都进行编译
假如现在只有main.c进行了修改,则只编译一个文件,其他连接现有的即可。

cc main.c test.o p.o

2、 假如现在有main.c 和 main.h,应该如何编译链接?

cc main.c 

这样处理是没有问题的,因为cc会自动找到依赖的main.h
3、 假如现在 main.c test.c test.h 三个文件,正常情况下确实是

cc main.c test.c 

就可以了,如果test.c发生了修改,则1中已经给出了高效的解决方案
但是如果test.h发生了修改呢?这就要考虑谁依赖于test.h
如果main.c和test.c都依赖于test.h,那就只能重新

cc main.c test.c 

如果只有test.c依赖于test.h,那么

cc -c test.c -o test.o
cc test.o main.o

相关文章:

  • 攻防世界 dice_game
  • 模型开发之前的核心工作
  • 黄雀在后:外卖大战新变局,淘宝+饿了么开启电商大零售时代
  • Java大师成长计划之第9天:高级并发工具类
  • 存储器层次结构:理解计算机记忆的金字塔
  • 模型之FIM(Fill-In-the-Middle)补全
  • 12.多边形的三角剖分 (Triangulation) : Fisk‘s proof
  • 销售预测业务优化设计方案汇报P99(99页PPT)(文末有下载方式)
  • 总结C++中的STL
  • C++笔记-继承(下)(包含派生类的默认成员函数,菱形继承等)
  • 代码随想录单调栈part1
  • 使用CubeMX新建DMA工程——存储器到存储器模式
  • 计网_PPP协议
  • MOOS-ivp使用(一)——水下机器人系统的入门与使用
  • 【STM32单片机】#12 SPI通信(软件读写)
  • Ollama 本地运行 Qwen 3
  • 连接linux虚拟机并运行C++【从0开始】
  • 【Day 14】HarmonyOS分布式数据库实战
  • Hibernate与MybatisPlus的混用问题(Invalid bound statement (not found))
  • C++11新特性_Lambda 表达式
  • 制定出台民营经济促进法有何重大意义?全国人大常委会法工委回应
  • 抗美援朝老战士宁昭逝世,享年93岁
  • 胸外科专家查出肺多发结节,说了一个可怕的事实……
  • 辽宁辽阳市白塔区一饭店火灾事故举行新闻发布会,现场为遇难者默哀
  • 五大国有银行明确将撤销监事会
  • 【社论】人工智能,年轻的事业