V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hsfzxjy
V2EX  ›  分享发现

可以一次编译处处运行的 Cosmopolitan Libc

  •  
  •   hsfzxjy · 2022-08-31 20:54:55 +08:00 · 2247 次点击
    这是一个创建于 576 天前的主题,其中的信息可能已经有所发展或是发生改变。

    分享最近看到的一个神奇的东西。

    cosmo libc 是一个实验性质的 C 库,可以做到代码编译一次即在 6 个操作系统上运行。( Linux, Mac OS X, Windows NT, FreeBSD, OpenBSD, and NetBSD )

    注意这里说的是“一次编译,处处运行”,不是“一次编写,处处编译”,也不依赖额外的运行时。

    其编译的产物是单个 APE 格式的文件。APE (αcτµαlly pδrταblε εxεcµταblε)是一个其自创的文件格式。这种格式同时是以上 6 个操作系统中合法的可执行文件格式,从而可以做到一次编译处处运行。

    另外还看到有人用 cosmo libc 把 CPython 重新编译了一遍( https://ahgamut.github.io/2021/07/13/ape-python/ )。性能和功能完整性上有些许不足,但还是很震撼的。

    8 条回复    2022-09-07 06:52:00 +08:00
    codehz
        1
    codehz  
       2022-08-31 21:03:45 +08:00
    cosmopolitan 已经自带 python 啦,不需要用第三方的(
    现在也支持用 c++库了
    但是用第三方库得自己改造源码)
    所以实用性不是很强,但是很好玩
    hsfzxjy
        2
    hsfzxjy  
    OP
       2022-08-31 21:10:01 +08:00
    @codehz 确实,刚看到了
    seakingii
        3
    seakingii  
       2022-08-31 22:42:24 +08:00
    真的很神奇!我刚用官方的例子测试了 hello,同一个二进制文件,可以在 ubuntu 和 windows 10 下正确运行...

    不过在 ubuntu 的 zsh 下不能运行,官方说明要用 bash -c './hello.com'
    Tink
        4
    Tink  
       2022-08-31 23:05:45 +08:00 via Android
    这个编译出来尺寸会很大么?
    hsfzxjy
        5
    hsfzxjy  
    OP
       2022-09-01 01:19:47 +08:00
    @Tink 不是很大,他的 hello world 只有 12kb https://justine.lol/cosmopolitan/howfat.html

    对于更复杂的程序,如果只是用到了 POSIX 接口,我的理解是不需要额外的抽象层适配各个系统,因此编译出来的体积也不会大;如果用到了某个系统独有的特性,则需要把各个系统对应的接口代码打包进去,体积会相应增大。
    seakingii
        6
    seakingii  
       2022-09-01 01:44:35 +08:00
    @Tink 我按官方代码,在 ubuntu 上编译出来 100K
    wslzy007
        7
    wslzy007  
       2022-09-02 09:28:51 +08:00
    现阶段意义不是很大,谈几点吧:
    1 、交叉编译环境任然是必须的,跨系统,但无法跨 cpu 架构
    2 、复杂的项目往往依赖很多三方模块,要么 allinone ,要么接受可能的罢工
    3 、话说 musl 库也能做到同架构同平台一处编译,至少可以从系统角度做减法
    最后,我想说的是:这或许是个重要方向,但需要形成标准且被各系统厂商广泛支持才能真正发挥效用
    mayli
        8
    mayli  
       2022-09-07 06:52:00 +08:00
    项目发起人还是个妹子!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2855 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 13:39 · PVG 21:39 · LAX 06:39 · JFK 09:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.