如何在 nix 中构建自托管的 clang?

问题描述

我正在尝试在 nix 中构建一个自托管的 clang。

通过参考其他页面 (NixOS Wiki: Using Clang instead of GCC) 和线程 (Nix discourse: Use Clang without GCC's C++ standard library),我尝试过(变体):

nix-build -E "with import <nixpkgs> {}; pkgs.clang-tools.override{ stdenv = pkgs.clangStdenv.override (x: {cc = x.cc.override(_: {libcxx = llvmPackages.libcxx;}); }); }"

但这似乎不起作用:

$ nix-build -E "with import <nixpkgs> {}; pkgs.clang-tools.override{ stdenv = pkgs.clangStdenv.override (x: {cc = x.cc.override(_: {libcxx = llvmPackages.libcxx;}); }); }"
/nix/store/45whyxm1y5mjf5g12c0wjvjcmrxxqdaz-clang-tools-10.0.1
$ tail -n 1 /nix/store/45whyxm1y5mjf5g12c0wjvjcmrxxqdaz-clang-tools-10.0.1/bin/clangd
exec -a "$0" /nix/store/6pzqj9q656vc1msa675k75hmhsrfizsy-clang-10.0.1/bin/$(basename $0) "$@"
$ ldd /nix/store/6pzqj9q656vc1msa675k75hmhsrfizsy-clang-10.0.1/bin/clangd | grep gcc
libstdc++.so.6 => /nix/store/c10296m7xgm3ksibcklb2xf48jr635x3-gcc-9.3.0-lib/lib/libstdc++.so.6 (0x00007f55d359b000)
libgcc_s.so.1 => /nix/store/0c7c96gikmzv87i7lv3vq5s1cmfjd6zf-glibc-2.31-74/lib/libgcc_s.so.1 (0x00007f55d343e000)

我错过了一步吗?还是误解了 ldd 的输出?我意识到 clangd 本身就是一个脚本,我确实重现了创建的环境,但它没有任何区别(我不希望它如此)。为简单起见,我已从上面的示例中删除了这一点。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)