stdenv.mkDerivation 使用 cmake 静态 link 失败

stdenv.mkDerivation with cmake failed to link staticly

我正在尝试使用以下 default.nix 构建 halite

with import <nixpkgs> {};

stdenv.mkDerivation rec {
  pname = "halite";
  version = "git";
  name = "${pname}-${version}";
  src = ./.;
  buildInputs = [ cmake ];
}

但是当我 运行 nix-build default.nix 它未能 link 并出现以下错误:

[ 97%] Building CXX object CMakeFiles/halite.dir/main.cpp.o
[100%] Linking CXX executable halite
/nix/store/z470j6lybdsy4ql972k392490bprhd2g-binutils-2.28.1/bin/ld: cannot find -lpthread
/nix/store/z470j6lybdsy4ql972k392490bprhd2g-binutils-2.28.1/bin/ld: cannot find -lm
/nix/store/z470j6lybdsy4ql972k392490bprhd2g-binutils-2.28.1/bin/ld: cannot find -lc
collect2: error: ld returned 1 exit status

可以找到完整的日志here

我尝试修复此问题但没有成功:


cmake 项目 default.nixshell.nix 的正确写法应该是什么?

通过使用 glibc.static 作为 ppb 的 解决了,谢谢。

原来问题不是来自 default.nix 而是来自 halite 尝试使用静态 link.

当我将 CMakeList.txt 更改为使用动态 link 时,构建没问题。