看来 Nix 应该能够在 64 位系统上安装和构建 32 位软件包。它的缓存已经存储了为 i686 架构构建的整个 nixpkgs 树,下载和安装它们应该没有问题,但我看不到这样做的方法。
答案1
如果您还不知道如何使用 nix 构建单独的包,这是说明。
尼克斯包装定义特殊变量pkgsi686Linux对于 i686 软件包树和呼叫包_i686用于调用任意 nix 表达式并覆盖system="i686-linux"
.它们的用法非常简单。
方法一:
jsoncpp06_32 = nixpkgs.callPackage_i686 ./jsoncpp06.nix { };
方法二:
myPackage32 = pkgs.pkgsi686Linux.stdenv.mkDerivation {
name = "myPackage-i686-0.0.1";
boost155 = nixpkgs.pkgsi686Linux.boost155;
buildInputs = [
pkgs.gcc_multi
pkgs.python2
pkgs.pkgconfig
pkgs.pkgsi686Linux.ffmpeg_2_2
pkgs.pkgsi686Linux.boost155
pkgs.pkgsi686Linux.openssl
pkgs.pkgsi686Linux.curl
pkgs.pkgsi686Linux.opencv
jsoncpp06_32
];
};
答案2
也许这也是一个可行的解决方案。
默认.nix
{ system ? builtins.currentSystem }:
let pkgs = import <nixpkgs> { inherit system; }
in pkgs.stdout.mkDerivation {
# ... as usual
}
然后你跑
% nix-build default.nix --argstr "x86_64-linux"
和
% nix-build default.nix --argstr "i686-linux"