使用cmake的stdenv.mkDerivation无法静态链接

时间:2017-10-23 12:08:34

标签: gcc cmake nix

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

with import <nixpkgs> {};

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

但是当我运行nix-build default.nix时,它无法链接以下错误:

[ 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

我尝试解决这个问题,但没有成功:

  • gccpkgconfig添加到buildInputs
  • 使用nativeBuildInputspropergatedBuildInputs

default.nix项目撰写shell.nixcmake的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

使用glibc.static作为ppb的suggested解决,谢谢。

证明问题不是来自default.nix,而是来自halite尝试使用静态链接。

当我将CMakeList.txt更改为使用动态链接时,构建就可以了。