我如何在 nix-shell 中 select GCC 版本?

How do I select GCC version in nix-shell?

我申请的是 GCC 8,但我得到的是 GCC 7。

$ nix-shell -p gcc8
[nix-shell:~]$ gcc --version
gcc (GCC) 7.3.0

这是怎么回事?

您的环境需要基于 stdenvNoCC,而不是 stdenv

也就是说,你可以在当前目录下创建一个shell.nixdefault.nix文件,定义环境,然后运行 nix-shell.

with import <nixpkgs> {}; {
  qpidEnv = stdenvNoCC.mkDerivation {
    name = "my-gcc8-environment";
    buildInputs = [
        gcc8
        go
        ruby_2_4
        gdb
        swig
        # libev
        #...
    ];
  };
}

现在,一切正常

$ nix-shell
[nix-shell:~]$ gcc --version
gcc (GCC) 8.1.0

来源:https://groups.google.com/forum/#!topic/nix-devel/of6P-sEtQN0

改用nix run。它表现得更好,并且在下载包时也有更好的进度指示器。

jdanek@nixos ~ % nix run -f channel:nixos-19.03 gcc8
[jdanek@nixos:~]$ gcc --version
gcc (GCC) 8.3.0