Repolode
jart

jart/cosmopolitan

一个让 C/C++ 程序一次构建、到处运行的标准库与工具链,产物可在多种操作系统上原生运行。

Star
21,432
Fork
784
未关闭 Issue
226
最近提交
17天前

这是什么?

Cosmopolitan Libc 让 C 和 C++ 程序只需构建一次,即可在 Linux、macOS、Windows、FreeBSD、OpenBSD、NetBSD 以及 BIOS 上运行。它通过改造 GCC 和 Clang 的输出,生成一种名为 APE(Actually Portable Executable)的通用可执行格式,因此无需解释器或虚拟机。

项目提供 cosmocc 编译器发行包,使用方式与普通 C 编译器相同,也可以用来构建基于 autotools 的开源项目。运行时内置 --strace、--ftrace 等调试选项,用于查看系统调用和函数调用日志。

仓库还包含源码构建系统,支持 tiny、tinylinux 等构建模式以生成更小的二进制文件,并附有在 Linux 和 WSL 上配置 APE 加载器的说明。

核心功能

  • 01将 C 和 C++ 程序编译为可在多个操作系统上运行的单一可执行文件。
  • 02基于标准 GCC 和 Clang 工具链,通过 cosmocc 发行包使用。
  • 03运行时内置 --strace 和 --ftrace 调试选项。
  • 04提供 tiny、tinylinux 等构建模式以减小二进制体积。
  • 05可用于构建基于 autotools 的开源项目。

适用场景

  • 将命令行工具打包为一个文件,在 Linux、macOS 和 Windows 上通用。
  • 为未安装运行时的系统打包便携工具或服务。
  • 无需为每个平台分别编译,即可让现有 C 项目跨系统运行。

快速上手

  1. 1

    下载 cosmocc 编译器发行包

    wget https://cosmo.zip/pub/cosmocc/cosmocc.zip
  2. 2

    解压编译器压缩包

    unzip cosmocc.zip
  3. 3

    编译 hello world 程序

    cosmocc -o hello hello.c
  4. 4

    运行生成的可执行文件

    ./hello

使用前须知

  • 部分 Linux 发行版需要先用 binfmt_misc 注册 APE 加载器,否则 APE 程序无法运行。
  • 在 WSL 中使用 APE 程序并不安全,除非禁用 WSLInterop;Windows 7 和 Vista 需要使用社区维护的独立分支。

收录于专题

标签

#libc#compiler#cross-platform#portable-executable#toolchain#bios#containers#darwin#efi#freebsd

常见问题

cosmopolitan 是什么?
一个让 C/C++ 程序一次构建、到处运行的标准库与工具链,产物可在多种操作系统上原生运行。 Cosmopolitan Libc 让 C 和 C++ 程序只需构建一次,即可在 Linux、macOS、Windows、FreeBSD、OpenBSD、NetBSD 以及 BIOS 上运行。它通过改造 GCC 和 Clang 的输出,生成一种名为 APE(Actually Portable Executable)的通用可执行格式,因此无需解释器或虚拟机。
cosmopolitan 可以免费使用吗?用的什么许可证?
cosmopolitan 以 ISC 许可证开源。用于商业产品前,请先确认许可证条款。
cosmopolitan 还在维护吗?
活跃维护中。cosmopolitan 最近一次提交是在 2026年10月20日。
cosmopolitan 适合用来做什么?
将命令行工具打包为一个文件,在 Linux、macOS 和 Windows 上通用。 为未安装运行时的系统打包便携工具或服务。 无需为每个平台分别编译,即可让现有 C 项目跨系统运行。
cosmopolitan 怎么安装和运行?
下载 cosmocc 编译器发行包: wget https://cosmo.zip/pub/cosmocc/cosmocc.zip 解压编译器压缩包: unzip cosmocc.zip 编译 hello world 程序: cosmocc -o hello hello.c 运行生成的可执行文件: ./hello
在哪里获取 cosmopolitan?
源代码和安装说明在 GitHub 上:https://github.com/jart/cosmopolitan

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目