gpt4 book ai didi

package - 如何在 nixos 中覆盖单个包的编译标志?

转载 作者:行者123 更新时间:2023-12-02 16:59:17 24 4
gpt4 key购买 nike

如何在 NixOS/Nix 环境中覆盖单个包的编译标志(如 CFLAGS)?

这是我现在得到的:

let
optimizeForThisHost = pkg:
pkgs.lib.overrideDerivation pkg (old: {
exportOptimizations = ''
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -fPIC -O3 -march=native"
'';
phaseNames = ["exportOptimizations"] ++ old.phaseNames;
});
in
muttWithoutThings = pkgs: (pkgs.mutt.override {
sslSupport = false;
saslSupport = false;
imapSupport = false;
withSidebar = false;
};
});

mutt = pkgs:
(optimizeForThisHost (muttWithoutThings pkgs));

在我的configuration.nix中,尽管失败了

error: attribute ‘phaseNames’ missing

最佳答案

这是一个使用自定义编译器标志构建(并运行)GNU hello 副本的工作示例:

nix-shell -p 'hello.overrideDerivation (old: { NIX_CFLAGS_COMPILE = "-Ofoo"; })' --run "hello --version"

如果您想说服自己这是否真的有效,请尝试向编译器传递一个不存在的标志,例如 -Ofoo,并验证构建是否按预期失败。

有关 overrideDerivation 函数(以及类似替代方案)的更多信息可以在 Nixpkgs 手册 http://nixos.org/nixpkgs/manual/index.html#sec-pkg-overrideDerivation 中找到。 .

关于package - 如何在 nixos 中覆盖单个包的编译标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42136197/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com