我是多年的 Ruby 爱好者。我无法确定缺少什么来阻止 FFI 安装。
这是文件中的错误make.out
(一定喜欢这个名字):
make[3]: *** [Makefile:1048: libffi_convenience.la] Error 1
make[3]: Leaving directory '/home/dw/.gem/ruby/2.4.0/gems/ffi-1.9.23/ext/ffi_c/libffi-x86_64-linux'
make[2]: *** [Makefile:1309: all-recursive] Error 1
make[2]: Leaving directory '/home/dw/.gem/ruby/2.4.0/gems/ffi-1.9.23/ext/ffi_c/libffi-x86_64-linux'
make[1]: *** [Makefile:617: all] Error 2
make[1]: Leaving directory '/home/dw/.gem/ruby/2.4.0/gems/ffi-1.9.23/ext/ffi_c/libffi-x86_64-linux'
make: *** [libffi.mk:9: "/home/dw/.gem/ruby/2.4.0/gems/ffi-1.9.23/ext/ffi_c/libffi-x86_64-linux"/.libs/libffi_convenience.a] Error 2
make failed, exit code 2
我检查了 nixpkgs 并看到libffi-3.2.1
可以pure-ffi-0.14
使用。我两个都安装了。我仍然收到错误。
答案1
第一个选项是使用邦迪克斯。它使用全局覆盖文件来注入系统依赖项:https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/ruby-modules/gem-config/default.nix
最重要的宝石应该在那里找到,包括菲菲gem,您正在尝试安装。
如果您不想/不能使用 bundix,替代方案是 nix-shell,它为您提供正确的构建环境。
对于 ffi gem,您还可以从 nixpkgs 的 gem-config 借用代码:
with import <nixpkgs> {};
stdenv.mkDerivation {
name = "env";
buildInputs = [
ffi pkgconfig
];
}
nix-shell
然后在项目中运行就可以了。此步骤也可以使用 direnv 的 nix 支持自动化。安装ffi
vianix-env
不起作用,因为它没有设置 ffi gem 在编译期间找到正确的标头/库所需的NIX_CFLAGS_COMPILE
和变量。NIX_LDFLAGS