obj 文件

在 C++ 开发中,obj 文件目标文件(Object File) 的简称,是源代码编译后、链接成最终可执行文件前的中间产物。

一、obj 文件的生成过程

  1. 编译器(如 MSVC、GCC)对单个 .cpp 源文件进行编译,会完成预处理、编译、汇编 三步:
    • 预处理:处理 #include#define 等指令,生成纯代码;
    • 编译:将纯代码翻译成汇编语言;
    • 汇编:将汇编语言翻译成机器码 ,并打包成 .obj 目标文件。
  2. 一个 .cpp 文件编译后会生成一个对应的 .obj 文件(比如 main.cppmain.objutils.cpputils.obj)。

二、obj 文件的特点

  • 包含机器码,但不可直接运行 :obj 文件里是 CPU 能识别的机器码,但缺少系统级的启动代码、库函数依赖,还没解决多个文件之间的符号引用(比如 main.cpp 调用 utils.cpp 里的函数),因此无法直接双击运行。
  • 与平台 / 编译器强相关:不同编译器(MSVC vs GCC)、不同架构(x86 vs x64)生成的 obj 文件格式不同,无法混用。

三、obj 文件的最终去向:链接成可执行文件

链接器(Linker)会把所有 obj 文件 + 系统库 / 第三方库文件 整合起来,解决符号引用、补充依赖代码,最终生成能直接运行的可执行文件(Windows 下是 .exe,Linux 下是 .out)。

简单说:obj 文件是 C++ 编译过程中的 "半成品",多个半成品经过链接器加工,才会变成成品可执行文件。

相关推荐
用户805533698031 天前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
BadBadBad__AK2 天前
线段树维护区间 k 次方和
c++·数学·算法·stl
卷无止境2 天前
Eigen 库如何借助 OpenMP 加速计算
c++·后端
卷无止境2 天前
OpenMPI、MPICH 与 OpenMP:关系、核心概念与架构全解
c++·后端
郝学胜_神的一滴3 天前
CMake 30:循环语法全解|foreach_while双循环精讲、迭代技巧与实战避坑指南
c++·cmake
卷无止境5 天前
C++ 的Eigen 库全解析
c++
卷无止境5 天前
现代 C++特性大盘点:一门脱胎换骨的老语言
c++·后端
郝学胜_神的一滴5 天前
CMake 27:缓存变量的特性、语法、类型与实操全解
c++·cmake
博客18007 天前
酷宝的使用方法,超好用的免费界面库,C++、MFC可用
c++·mfc·界面库·库来帮·酷宝
郝学胜_神的一滴7 天前
CMake 026:属性体系精讲、四大作用域全解 & 实战代码落地
c++·cmake