• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Sunrisepeak
V2EX  ›  程序员

通过定义一个内核接口层 OpenKAL,实现了 C++通用交叉编译/构建,可以在 Windows 上交叉编译 Linux 和 macos 程序 (其实更通用 在任意 OS 交叉构建到任意 OS 程序)

  •  
  •   Sunrisepeak ·
    Sunrisepeak · 2 days ago · 1011 views

    注: 任意是指在 macos/windows/linux 任意一个 交叉编译到 macos/windows/linux


    Image
    8 replies    2026-08-26 14:31:48 +08:00
    coefu
        1
    coefu  
       2 days ago
    依赖的底层库都不同,任意对任意,你怎么交叉编译得成功,标题有点过了,还是要标明约束条件的。
    xinyu391
        2
    xinyu391  
       1 day ago
    llvm 不就支持的吗?
    干嘛还要搞个内核接口?
    SmiteChow
        3
    SmiteChow  
       1 day ago
    zig 挑战我的编译器?
    Sunrisepeak
        4
    Sunrisepeak  
    OP
       1 day ago
    @coefu 就是可以啊, 屏蔽了底层库区别,走统一 ABI openkal ,编译期自动分发
    Sunrisepeak
        5
    Sunrisepeak  
    OP
       1 day ago
    @xinyu391 llvm 设计上就是多指令集后端,但是各种原因 通用交叉编译是用不了的。即在 linux 构建出可以用标准库的 macos / windows / linux 程序 现实好像没有人做这块,只有 mingw 做了 linux -> windows 是比较常用的,但目前 mcpp + openkal 体系 做到了 3 x 3 任意交叉构建 直接覆盖了 mingw 的功能范围 (当然目前是 MVP 初步验证通过,稳定性等一些方面肯定不能和 mingw 比
    Sunrisepeak
        6
    Sunrisepeak  
    OP
       1 day ago
    @SmiteChow 目前 mcpp 的方式是 把 kernel abi / c abi / c++ abi 变成编译期确定 可组合,和 编译器核心 解耦,和 zig 方式 可能稍微有点区别
    xinyu391
        7
    xinyu391  
       23h 23m ago
    感觉就是个跨平台接口的 C 库,
    别笑我,我外行。
    Sunrisepeak
        8
    Sunrisepeak  
    OP
       18h 9m ago
    @xinyu391 他本身不是库,只是接口规范没有任何实现。具体实现在 backend, 而 backend 你可以直接是内核或对系统调用封装的 C ,openkal 不关心实现方式 只做接口规范和标准。

    这是 openkal 的 linux 实现, 直接走系统调用, 而 C 语言只是方便使用的工具

    - https://github.com/mcpplibs/openkal-linux/blob/main/src/sys.h

    但其实 openkal 不关心 是汇编或是其他。因为他是面向内核接口规范设计的一组 SPEC / 规约 / ABI, 即:

    openkal: 是一组内核接口规范 (这个不是传统意义上的库)
    openkal-linux: 是对这个内核接口规范的实现。(这个规范的具体实现以库形似表现, 也可以是内核)

    只不过这个确实不太清楚怎么解释比较好, 核心就是理解 规范 和 具体的库的区别。

    当然概念上有个类似的东西叫 posix, 你可以了解一下

    (当然你我上面这段话复制给 AI 和他多轮对话辅助理解)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3474 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 00:41 · PVG 08:41 · LAX 17:41 · JFK 20:41
    ♥ Do have faith in what you're doing.