请使用官方仓库提交错误、想法和功能请求:https://github.com/Koromix/koffi
请注意,源代码并不在这个仓库中,而是位于一个单体仓库中:https://github.com/Koromix/rygel/(在 src/koffi 子目录中)。
我们提供了预构建的二进制文件,打包在 NPM 存档中,因此在大多数情况下,只需运行 npm install koffi 即可。如果您想修改 Koffi 或使用特定平台,请按照以下说明操作。
首先,使用 Git 克隆仓库:
如前所述,这是一个包含多个项目的单体仓库,因此得名。
首先,确保满足以下依赖项:
完成这些后,从测试或基准测试目录运行以下命令(具体取决于您要构建的内容):
确保满足以下依赖项:
gcc 和 g++ >= 8.3 或更新版本完成这些后,从测试或基准测试目录运行以下命令(具体取决于您要构建的内容):
构建 Koffi 后,可以使用以下命令构建测试并运行:
Koffi 使用 QEMU 机器(尽可能加速)在多种架构上进行测试。首先,您需要在 Ubuntu 上安装 QEMU 软件包,例如 qemu-system(或甚至 qemu-system-gui)。
这些机器并未直接包含在本仓库中(由于许可和大小原因),但可以从以下位置获取:https://koromix.dev/files/machines/
例如,如果您想在 Debian ARM64 上运行测试,请运行以下命令:
请注意,每次运行机器时,机器磁盘内容可能会发生变化,因此一旦机器被使用过至少一次,校验和测试将会失败。
现在,您可以运行测试:
请注意,对于模拟的机器,这可能会相当慢。Linux 机器使用 ccache 构建 Koffi,因此后续构建步骤会更加可接受。
默认情况下,每次测试都会启动和关闭机器。但您可以提前启动机器,并多次运行测试:
您还可以将测试限制为一组特定的机器:
最后,如果您需要进行调试或其他手动操作,可以通过以下快捷方式连接到正在运行的机器的 SSH:
每台机器都配置了一个本地可用的 VNC 服务器,您可以使用 KRDC 或其他兼容的查看器访问显示内容。使用 info 命令获取 VNC 端口:
首先,您需要按照以下三个步骤更新代码:
package.json 中更改版本号(对于稳定版本,同时更改版本号和稳定版本号)CHANGELOG 中添加一个条目,总结自上次发布以来的变更完成这些后,您可以使用以下命令发布新版本:
由于某些平台是模拟的,因此可能需要几分钟时间才能生成预构建的二进制文件。去喝杯咖啡,回来后执行 npm publish 命令!
Koffi 使用 C++ 和汇编代码(特定于架构的代码)编写。它使用 node-addon-api(C++ N-API 封装器)与 Node.js 交互。
我个人倾向于类似 C 的 C++ 风格,谨慎使用模板(主要用于容器)和少量面向对象编程。我更倾向于使用标记联合和代码局部性,而不是继承和虚方法。异常已禁用。
有关代码风格的更多信息,请参阅单体仓库的 README 文件。