6

我想stdenv.cc使用覆盖(即不更改nixpkgs)全局覆盖特定的GCC版本(不一定在nixpkgs中)。有没有办法做到这一点?

像这样的覆盖会导致无限递归(因为包gcc49stdenv作为输入):

self: super:
{
  stdenv = super.overrideCC super.stdenv super.gcc49;
}

改变stdenv.cc全局的正确方法是什么?

手动设置stdenv = ...import nixpkgs不可行的,因为我cc不仅想在构建/使用 nix 表达式时替换,而且在例如nix-shell -p package.

有人可以帮我弄这个吗?

4

1 回答 1

2
(import <nixpkgs> { overlays = [(self: super: { gcc = self.gcc10; })]; }).stdenv.cc

这将返回 gcc-10.1.0 的派生,因此它可以工作。

于 2020-06-05T21:07:38.047 回答