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

如何编译TensorFlow Serving(XLA)使LLVM/MLIR为共享对象而非静态链接

编译TensorFlow Serving时生成LLVM/MLIR共享库的问题

问题背景

我正在编译TensorFlow Serving项目,希望将LLVM/MLIR编译为共享对象。项目的依赖链为TensorFlow Serving -> TensorFlow -> XLA,当前编译出的二进制文件体积庞大,且基本为静态链接。

已尝试的操作

  • 在tensorflow_serving/model_servers/BUILD的tensorflow_model_server规则中设置linkstatic = False,该设置生效后生成的二进制文件链接了约2030个动态库,但在其他位置设置该参数无效果
  • 尝试在多处设置linkshared = True,未达到预期效果

当前困惑

无法追踪完整编译流程,找不到LLVM和MLIR的编译规则。通过梳理Bazel文件,推测依赖链如下:

tensorflow serving
  └── tensorflow text
      └── tensorflow (should include llvm/mlir)
          └── xla    (should include llvm/mlir)

但仍不清楚LLVM的具体编译位置与方式。

期望目标

生成可在运行时加载的libLLVM.so和libMLIR.so。已知使用-DLLVM_BUILD_LLVM_DYLIB=ON参数可生成相关库,但不确定该参数的设置位置及后续链接方式,最终希望tensorflow_model_server的ldd输出如下:

ldd bazel-bin/tensorflow_serving/model_servers/tensorflow_model_server
        linux-vdso.so.1 (0x0000ffffb1084000)
        libLLVM.so      => /myllvm/libLLVM.so.0 (0x0000ffffbxxxxxx)
        libMLIR.so      => /mymlir/libMLIR.so.0 (0x0000ffffbxxxxxx)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x0000ffffb1011000)
        libm.so.6       => /lib64/libm.so.6 (0x0000ffffb0f40000)
        libdl.so.2      => /lib64/libdl.so.2 (0x0000ffffb0f1f000)
        librt.so.1      => /lib64/librt.so.1 (0x0000ffffb0efe000)
        libstdc++.so.6  => /lib64/libstdc++.so.6 (0x0000ffffb0d1b000)
        libgcc_s.so.1   => /lib64/libgcc_s.so.1 (0x0000ffffb0cf6000)
        libc.so.6       => /lib64/libc.so.6 (0x0000ffffb0b60000)
        /lib/ld-linux-aarch64.so.1 (0x0000ffffb1046000)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 09:48:13