txiki.js 在 Void Linux 上的构建问题分析与解决方案
txiki.js 是一个基于 QuickJS 的轻量级 JavaScript 运行时环境,它提供了现代 JavaScript 特性和丰富的内置模块支持。在 Void Linux 系统上构建 txiki.js 时,开发者可能会遇到一个与 libffi 库安装路径相关的构建问题。
问题现象
当在 Void Linux 系统上执行标准构建流程时,构建过程会在链接阶段失败,错误信息显示无法找到 libffi.a 库文件。具体表现为 CMake 报告"No rule to make target 'ffi_root/usr/local/lib/libffi.a'"错误,尽管 libffi 实际上已经成功编译并安装到了系统中。
根本原因分析
这个问题源于 libffi 在多架构系统上的默认安装行为。在 64 位系统上,GCC 通常会使用"multi-os-directory"特性,导致库文件被安装到 lib64 目录而非预期的 lib 目录。具体表现为:
- libffi 的构建系统检测到系统支持多架构目录布局
- 默认情况下,64 位库会被安装到 lib64 而非 lib 目录
- txiki.js 的 CMake 配置中硬编码了 lib 目录路径来查找 libffi
- 这种路径不匹配导致构建系统无法找到已安装的库文件
解决方案
解决此问题的方法是通过在 libffi 的配置阶段添加 --disable-multi-os-directory 选项,强制库文件安装到标准 lib 目录而非架构特定的 lib64 目录。这一修改可以通过以下方式实现:
- 修改 txiki.js 项目中的 CMakeLists.txt 文件
- 在 libffi 的 ExternalProject_Add 配置中添加相应的配置选项
这种解决方案具有以下优点:
- 不影响其他系统的正常构建
- 在已经使用 lib 目录的系统上不会产生副作用
- 解决了路径不一致导致的构建失败问题
技术背景
多架构目录支持是现代 Linux 发行版中用于同时支持 32 位和 64 位库文件的机制。GCC 通过 --print-multi-os-directory 选项可以查询当前系统的多架构目录名称。在 64 位系统上,这通常会返回 "lib64"。
libffi 是一个提供外部函数接口的库,它允许程序调用不同编程语言或不同调用约定编写的代码。txiki.js 使用 libffi 来实现 JavaScript 与原生代码的互操作性。
构建建议
对于希望在 Void Linux 或其他类似系统上构建 txiki.js 的开发者,建议:
- 确保系统已安装所有必要的构建依赖
- 如果遇到类似构建问题,可以检查库文件的实际安装位置
- 考虑使用文中提到的解决方案修改构建配置
- 构建完成后,验证生成的可执行文件功能是否正常
这个问题的解决方案已经被合并到 txiki.js 的主干代码中,未来版本的构建过程将不再受此问题影响。
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5-w4a8GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发Jinja00
请把这个活动推给顶尖程序员😎本次活动专为懂行的顶尖程序员量身打造,聚焦AtomGit首发开源模型的实际应用与深度测评,拒绝大众化浅层体验,邀请具备扎实技术功底、开源经验或模型测评能力的顶尖开发者,深度参与模型体验、性能测评,通过发布技术帖子、提交测评报告、上传实践项目成果等形式,挖掘模型核心价值,共建AtomGit开源模型生态,彰显顶尖程序员的技术洞察力与实践能力。00
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
MiniMax-M2.5MiniMax-M2.5开源模型,经数十万复杂环境强化训练,在代码生成、工具调用、办公自动化等经济价值任务中表现卓越。SWE-Bench Verified得分80.2%,Multi-SWE-Bench达51.3%,BrowseComp获76.3%。推理速度比M2.1快37%,与Claude Opus 4.6相当,每小时仅需0.3-1美元,成本仅为同类模型1/10-1/20,为智能应用开发提供高效经济选择。【此简介由AI生成】Python00
Qwen3.5Qwen3.5 昇腾 vLLM 部署教程。Qwen3.5 是 Qwen 系列最新的旗舰多模态模型,采用 MoE(混合专家)架构,在保持强大模型能力的同时显著降低了推理成本。00- RRing-2.5-1TRing-2.5-1T:全球首个基于混合线性注意力架构的开源万亿参数思考模型。Python00