当前位置: 首页 > news >正文

Cosmopolitan:一次构建,多平台原生运行的C语言库行!

Cosmopolitan:C语言的跨平台革命,无需虚拟机,直接运行于任何环境。- 精选真开源,释放新价值。

image

概览

Cosmopolitan是一个创新的C语言库,旨在实现C程序的"一次编写,多处运行",类似于Java的跨平台特性,但无需依赖解释器或虚拟机。它通过重新配置标准的GCC和Clang编译器,输出符合POSIX标准的多语言格式,确保程序能够在Linux、Mac、Windows、FreeBSD、OpenBSD、NetBSD以及BIOS等平台上以最佳性能和最小化资源占用运行。


主要功能

你可以从以下连接获取编译器:https://cosmo.zip/pub/cosmocc

mkdir -p cosmocc
cd cosmocc
wget https://cosmo.zip/pub/cosmocc/cosmocc.zip
unzip cosmocc.zip

以下是编写的示例程序:

// hello.c
#include <stdio.h>int main() {printf("hello world\n");
}

可以按如下方式编译:

cosmocc -o hello hello.c
./hello
  • 跨平台兼容性

Cosmopolitan通过重构GCC和Clang编译器,生成符合POSIX标准的代码,确保C程序在Linux、Mac、Windows、FreeBSD、OpenBSD、NetBSD以及BIOS等操作系统上无需额外修改即可运行。这种跨平台的能力减少了为不同操作系统编写和维护特定代码的工作量,简化了开发流程。

  • 高性能

Cosmopolitan专注于生成高效的本地代码,通过优化编译器的输出,减少运行时开销,从而在各种平台上实现接近原生应用的性能。它避免了解释器或虚拟机带来的性能损耗,让C程序能够直接与操作系统交互,充分利用硬件资源。

  • 最小化资源占用

Cosmopolitan生成的二进制文件大小极小,例如,通过特定的构建模式,可以生成仅有12KB大小的程序。这种轻量级的特性使得程序部署更加便捷,尤其适合资源受限的环境或需要快速分发的场景。

  • 丰富的工具链

Cosmopolitan提供了cosmocc编译器,以及用于日志记录、调试和其他开发任务的工具。这些工具帮助开发者在编写、编译和运行程序时更加高效,同时简化了问题诊断和性能调优的过程。

  • 系统调用日志

Cosmopolitan内置了系统调用和函数调用的日志记录功能,允许开发者通过简单的命令行参数激活日志记录。这些日志对于理解程序的行为、定位问题和分析性能至关重要,提高了开发和维护的效率。

Cosmopolitan Libc 运行时默认链接了一些重量级的故障排除功能,这些功能对开发人员和管理员非常有用。以下是记录系统调用的方法:

./hello --strace
./hello --ftrace
  • 自定义构建模式

Cosmopolitan支持多种构建配置,允许开发者根据应用的需求选择不同的优化级别和功能集。例如,可以选择生成极小化的二进制文件,或者定制特定操作系统的优化,从而在保持程序性能的同时,减少资源消耗。

export CC=x86_64-unknown-cosmo-cc
export CXX=x86_64-unknown-cosmo-c++
./configure --prefix=/opt/cosmos/x86_64
make -j
make install

信息

截至发稿概况如下:

  • 软件地址:https://github.com/jart/cosmopolitan

  • 软件协议:ISC

  • 编程语言

语言占比
C62.0%
POV-Ray SDL24.2%
Assembly5.2%
Lua4.2%
Shell1.6%
Makefile1.2%
Other1.6%
  • 收藏数量:15.6K

Cosmopolitan项目为C语言开发者提供了一个强大的工具,使得他们能够更轻松地创建跨平台的应用程序。然而,跨平台开发也带来了一些挑战,例如不同平台间的API差异和性能优化问题。开发者可能需要对特定平台进行额外的适配工作,并在性能和兼容性之间找到平衡。此外,由于Cosmopolitan是一个相对较新的项目,社区支持和文档可能不如一些成熟的项目完善。为了解决这些问题,项目团队鼓励开发者参与到社区中来,共同贡献代码、分享经验和改进文档,以促进项目的成熟和稳定发展。

各位在使用 Cosmopolitan 的过程中是否发现了什么问题?或者对 Cosmopolitan 的功能有什么提议?热烈欢迎各位在评论区分享交流心得与见解!!!


声明:本文为辣码甄源原创,转载请标注"辣码甄源原创首发"并附带原文链接。

相关文章:

  • 编译原理要点和难点以及具体应用案例
  • 汇川CodeSys PLC教程 03-2-5EtherNet
  • 自然语言处理nlp概述
  • 基于gunicorn+flask+docker模型高并发部署
  • C#自定义类的属性名并且通过反射获取属性名
  • MinIO Enterprise Cache:实现超性能的分布式 DRAM 缓存
  • html入门综合练习
  • STM32基于DMA数据转运和AD多通道
  • js下拉框选择筛选数据数据联动
  • c++ 智能指针使用注意事项及解决方案
  • 华为中小企业组网
  • Ai绘画行业又叒翻天了!Stable Diffusion 3.0开源!多图实测附安装包!
  • arsetryhtehrwgefwadasdadasd
  • 算法题解记录29+++全排列(百日筑基)
  • 学习笔记——路由网络基础——路由优先级(preference)
  • [译]前端离线指南(上)
  • 345-反转字符串中的元音字母
  • classpath对获取配置文件的影响
  • JS专题之继承
  • python 装饰器(一)
  • RxJS: 简单入门
  • Sublime Text 2/3 绑定Eclipse快捷键
  • 读懂package.json -- 依赖管理
  • 基于webpack 的 vue 多页架构
  • 新书推荐|Windows黑客编程技术详解
  • 一天一个设计模式之JS实现——适配器模式
  • 一文看透浏览器架构
  • 阿里云ACE认证之理解CDN技术
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • ‌JavaScript 数据类型转换
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #QT 笔记一
  • (¥1011)-(一千零一拾一元整)输出
  • (2024,LoRA,全量微调,低秩,强正则化,缓解遗忘,多样性)LoRA 学习更少,遗忘更少
  • (bean配置类的注解开发)学习Spring的第十三天
  • (第三期)书生大模型实战营——InternVL(冷笑话大师)部署微调实践
  • (第一天)包装对象、作用域、创建对象
  • (独孤九剑)--文件系统
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (接上一篇)前端弄一个变量实现点击次数在前端页面实时更新
  • (四)c52学习之旅-流水LED灯
  • .axf 转化 .bin文件 的方法
  • .gitignore文件—git忽略文件
  • .net 连接达梦数据库开发环境部署
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .NET成年了,然后呢?
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .NET业务框架的构建
  • @EnableWebMvc介绍和使用详细demo
  • @ModelAttribute 注解
  • @RequestBody详解:用于获取请求体中的Json格式参数
  • @synthesize和@dynamic分别有什么作用?
  • [1181]linux两台服务器之间传输文件和文件夹
  • [16/N]论得趣