我如何在 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.nix
或default.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
我申请的是 GCC 8,但我得到的是 GCC 7。
$ nix-shell -p gcc8
[nix-shell:~]$ gcc --version
gcc (GCC) 7.3.0
这是怎么回事?
您的环境需要基于 stdenvNoCC
,而不是 stdenv
也就是说,你可以在当前目录下创建一个shell.nix
或default.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