You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Zig 0.10.1的zig.build文件中指定-rdynamic选项?

Zig 0.10.1通过build.zig构建Wasm库时无法导出符号的问题
  • 使用Zig 0.10.1构建Wasm库,此前用zig build-lib工具时,添加-rdynamic选项可正常导出符号,但改用build.zig构建时,找不到传递该选项的方式,导致add()函数未被导出。
  • 尝试执行zig build -rdynamic,工具提示不识别该选项,查看zig build -h也未发现相关配置项。
  • 想查看std.build.Builder的源码寻找解决方案,访问zig 0.10.x分支的lib/std/build目录,却找不到Builder.zig文件,怀疑路径有误。

我的build.zig文件

const Builder = @import("std").build.Builder;
const logger = @import("std").log;
const std = @import("std");

pub fn build(b: *Builder) !void {
    // Standard target options allows the person running `zig build` to choose
    // what target to build for. Here we do not override the defaults, which
    // means any target is allowed, and the default is native. Other options
    // for restricting supported target set are available.
    const target = b.standardTargetOptions(.{});

    // Standard optimization options allow the person running `zig build` to select
    // between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall. Here we do not
    // set a preferred release mode, allowing the user to decide how to optimize.
    const optimize = b.standardOptimizeOption(.{});

    const lib = b.addSharedLibrary(.{
        .name = "math",
        .root_source_file = .{ .path = "math.zig" },
        .target = target,
        .optimize = optimize,
    });
    b.installArtifact(lib);
}

我的math.zig文件

extern "env" fn print(i32) void;

export fn add(a: i32, b: i32) void {
    print(a + b);
}

将生成的wasm文件导入WebAssembly Code Explorer检查,确认add()函数未被导出。

内容的提问来源于stack exchange,提问作者Gregor Budweiser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 20:52:36