【问题标题】:How do I override the libc in a Nix package to be musl?如何将 Nix 包中的 libc 覆盖为 musl?
【发布时间】:2019-04-15 18:23:33
【问题描述】:

我使用 Nix 作为 Rust 程序的依赖管理器。我有以下 default.nix (简化,但工作):

rec {
  pkgs = import <nixpkgs> {};

  hello = pkgs.stdenv.mkDerivation rec {
    name = "rust-hello";

    buildInputs = [
      pkgs.rustc
    ];

    src = ./source;

    buildPhase = "rustc main.rs -o rust-hello";
    installPhase = ''
      mkdir -p $out/bin
      install -s rust-hello $out/bin
    '';
  };
}

我试图将所有依赖项(包括 Rust 编译器)的 libc 覆盖为 pkg.musl,但我没有这样做。如何实现?

【问题讨论】:

    标签: rust nix musl


    【解决方案1】:

    试试pkgsMusl便利属性(source)

    rec {
      pkgs = (import <nixpkgs> {}).pkgsMusl;
      # ...
    }
    

    【讨论】:

    • 罗伯特,请用四个空格而不是三个反引号缩进(代码)块。
    • 请注意,引用 pkgsMusl 或其中的任何包会导致运行数小时的大规模构建,从而限制其可用性。一些包在没有一些覆盖的情况下甚至无法构建(或者至少在 pkgsStatic 空间中)。但是,如果您需要使用 MUSL 库进行静态编译的 clang 构建,这似乎是获得 MUSL clang 的唯一方法。 :(
    猜你喜欢
    • 2021-05-04
    • 2019-10-18
    • 2020-07-28
    • 2019-12-18
    • 1970-01-01
    • 1970-01-01
    • 2015-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多