微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何在 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 举报,一经查实,本站将立刻删除。