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--基础IO(一)
linux·运维·服务器
mounter62513 小时前
现代 Linux 内存管理的演进与变革:从传统 LRU 到多代架构 MGLRU
linux·服务器·kernel
赵渝强老师14 小时前
【赵渝强老师】Kubernetes(K8s)中的金丝雀升级
linux·docker·云原生·容器·kubernetes
Qt程序员14 小时前
Linux RCU 原理与应用
linux·c++·内核·linux内核·rcu
The Sheep 202314 小时前
Vue复习
linux·服务器·数据库
兄台の请冷静14 小时前
Linux 安装es
linux·elasticsearch·jenkins
fengyehongWorld15 小时前
Linux rg命令
linux
pride.li15 小时前
海思视觉Hi3516CV610--开机自动设置ip
linux·网络·网络协议·tcp/ip
我叫张小白。15 小时前
CentOS 7 安装 Docker并配置镜像加速(完整指南)
linux·docker·centos
Titan202416 小时前
Linux动静态库
linux·服务器·c++