问题描述
我正在尝试将我的项目与静态openssl链接。我注意到openssl软件包https://github.com/NixOS/nixpkgs/blob/d6a12e8d9e0a4ac35ed401881e0d3160c764ac36/pkgs/development/libraries/openssl/default.nix#L5中有标志static
,但我不知道在使用时如何设置它。 (pkgs.openssl ...
?)。
当前,我使用pkgs.pkgsstatic.openssl
“解决”了它,但是它对gcc
的形式产生了非常讨厌的副作用,并且其他不相关的依赖项被静态地重新编译(这是怎么回事?)。
如何在启用了静态标志的情况下使用openssl
软件包?
解决方法
您可以使用override
更改传递给程序包的参数。如果您只想构建静态openssl
,就足够了:
pkgs.openssl.override {
static = true;
}
要使用此自定义的openssl
构建其他软件包,必须使用覆盖将其重新添加到nixpkgs
中:
self: super: {
openssl = super.openssl.override {
static = true;
};
}
此叠加层可以放置在~/.config/nixpkgs/overlays/openssl-static.nix
中或添加到configuration.nix
的{{1}}中。