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. 是平台相关的二进制文件,无法跨系统运行。
相关推荐
贵州诚鑫致达科技有限公司6 小时前
Linux的yum源怎么重启?源不是服务
linux·运维·服务器
澜山奕秋9 小时前
RHCSA
linux·运维·服务器
Web极客码10 小时前
告别流式截断:我用客户端中间件解决长文本 API 跨国 SSE 断连与数据自愈
linux·agent 图
cnnews10 小时前
Chromebox3安装Ubuntu后内存化与最小化 eMMC 写入优化
linux·运维·ubuntu
flytalei11 小时前
Ubuntu 24.04 单节点 K3s 部署实践:从环境评估到故障排查与验收
linux·运维·ubuntu
Starry-sky(jing)11 小时前
Hermes Agent 部署后怎么升级?v0.21.7 Linux 源代码版实测
linux·人工智能·ai agent·版本升级·hermes agent
水饺编程11 小时前
第2章:Linux 基础,clear 命令
linux·c语言·汇编
GeW12 小时前
新质生产力路线图Linux和数据库自主可控实践指南
linux
yunwei3712 小时前
eBPF 教程:BPF 迭代器用于内核数据导出
linux·后端·性能优化
别动我齐刘海13 小时前
实时控制学习2
linux·c++·人工智能·学习·算法