使用configuration.nix配置Rust环境时出现链接器cc缺失错误
解决NixOS下系统级Rust环境链接器缺失问题
问题根源
Rust编译生成可执行文件时依赖C链接器(cc),但NixOS中单独将rustc和cargo加入systemPackages只会安装这两个工具本身,不会自动拉取它们的隐式依赖(比如链接器)。而nix-shell会自动解析并加载包的完整依赖链,所以临时环境能正常工作。
解决方案
方案1:手动添加链接器包
修改/etc/nixos/configuration.nix,在systemPackages中加入gcc(它提供cc链接器):
environment.systemPackages = with pkgs; [ rustc cargo gcc ];
执行sudo nixos-rebuild switch生效后,再运行cargo build就不会报链接器缺失的错误了。
方案2:使用完整的Rust工具链包
Nixpkgs提供了预配置好的完整Rust环境包rustPackages.rust,它会自动包含rustc、cargo以及所有必要的编译依赖:
environment.systemPackages = with pkgs; [ rustPackages.rust ];
同样执行sudo nixos-rebuild switch激活配置即可。
内容的提问来源于stack exchange,提问作者PilotGuy
相关产品推荐
相关产品推荐

