10. .out文件

.out 文件是类Unix系统(Linux、macOS、FreeBSD等)下,C/C++/C#等编译型语言默认的可执行文件 ,是编译器(gcc/g++/clang)编译链接源代码后生成的二进制可执行程序 ,和Windows系统里的 .exe 文件功能完全一致,只是不同系统的可执行文件格式(.out是ELF格式、.exe是PE格式)和后缀约定不同。

核心关键信息

  1. 为什么默认是.out?

    早期Unix系统的编译器(a.out编译器),会把编译链接后的可执行文件固定命名为 a.out(a 代表 assembler 汇编器,out 代表 output 输出),这个命名习惯一直沿用到现在,gcc/g++/clang 编译时如果不指定可执行文件名称 ,就会默认生成 a.out

    例:直接用 gcc test.c 编译C文件,会自动生成 a.out;用 g++ test.cpp 编译C++文件,也是默认生成 a.out

  2. 怎么自定义可执行文件名称(避免a.out)?

    编译时用 -o 参数(output 缩写)指定名称即可,这是实际开发中最常用的方式,一般会把后缀去掉,直接用项目/功能命名。

    例:

    bash 复制代码
    gcc test.c -o myapp  # 编译后生成 可执行文件myapp(无后缀)
    g++ test.cpp -o calc # 编译后生成 可执行文件calc(无后缀)
  3. 怎么运行.out文件?

    类Unix系统中不能直接双击运行 ,需要在终端 中通过路径 执行,核心是加 ./(表示「当前目录」,系统默认不会在当前目录找可执行文件,必须显式指定)。

    例:

    bash 复制代码
    ./a.out       # 运行当前目录下的a.out
    ./myapp       # 运行自定义名称的可执行文件myapp
    /home/xxx/a.out # 运行绝对路径下的a.out
  4. .out文件能跨系统运行吗?

    不能!和Windows的.exe一样,.out平台相关的二进制文件

    • Linux下生成的a.out,不能在macOS/Windows上运行;
    • macOS下生成的a.out,不能在Linux/Windows上运行;
      跨系统需要重新在对应系统上编译源代码。
  5. 补充:不是所有.out都是可执行文件

    极少数情况下,部分工具/编译器会把输出日志、调试信息、目标文件 也命名为.out,但这种情况非常少见,99%的场景下,编程中遇到的.out都是可执行文件

和Windows的.exe文件对比

特性 .out文件(类Unix) .exe文件(Windows)
核心功能 二进制可执行程序 二进制可执行程序
默认生成 gcc/g++/clang 无-o参数时生成 MSVC/MinGW 无指定时生成
运行方式 终端 ./文件名 双击/命令行直接输文件名
底层格式 ELF(可执行链接格式) PE(可移植可执行格式)
跨平台性 仅对应类Unix系统可用 仅Windows系统可用

总结

  1. .out 是类Unix系统的默认可执行文件 ,等价于Windows的.exe
  2. 编译时用-o 自定义名称可避免生成a.out,实际开发中几乎都会这么做;
  3. 运行需在终端执行,核心是加./指定当前目录,格式为./文件名
  4. 是平台相关的二进制文件,无法跨系统运行。
相关推荐
琥珀色糖9 小时前
Linux守护进程
linux·终端·守护进程·会话·进程组
开心大爆炸13 小时前
xrdp 连接 登录对话框输入密码后闪退
linux·运维·服务器
oushaojun213 小时前
大厂 C++ 面试:深度剖析 Linux Signal 信号机制(转)
linux
苏生Susheng14 小时前
【软件实施】Linux系统Shell脚本教程
linux·运维·服务器·chrome·spring boot·学习·实施
Ruiery14 小时前
Linux 6.6内核 IOMMU 深度解析(七):DMA API 与 IOMMU 集成 — 从 dma_map_single 到 iommu_map
linux·运维·服务器
分支预测失败14 小时前
RISC-V AIA 中断架构实战:从 PLIC 到 APLIC 与 IMSIC 的迁移
linux·后端
GeW14 小时前
RHCE学习拿证计划:锁定核心考点,实现备考效率最大化
linux
snow@li15 小时前
服务器运维:Alibaba Cloud Linux 4 LTS 64位 根目录全景深度解析文章
linux·运维·服务器
苏生Susheng15 小时前
【软件实施】Linux企业运维常用命令手册
java·linux·运维·服务器·springboot·springcloud·软件实施
额额额对了15 小时前
Linux 进程间通信(IPC)核心机制:消息队列、共享内存与信号量详解
linux·网络·网络协议