Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 从cabal2nix和其他来源访问国外图书馆_Haskell_Ffi_Nix - Fatal编程技术网

Haskell 从cabal2nix和其他来源访问国外图书馆

Haskell 从cabal2nix和其他来源访问国外图书馆,haskell,ffi,nix,Haskell,Ffi,Nix,我正在用nix和cabal2nix构建Haskell外国图书馆。编译后,/result/目录包含libroman.so在/lib/ghc-8.8.4/子目录下 当试图在另一个派生中使用它时(在我的例子中是qt-one),链接器看不到它 哈斯克尔·尼克斯: let pkgs=import{}; 在里面 pkgs.haskellPackages.callCabal2nix“roman”。/。{} Qt-nix: let pkgs=import{}; romanEngine=import../eng

我正在用nix和cabal2nix构建Haskell外国图书馆。编译后,
/result/
目录包含
libroman.so
/lib/ghc-8.8.4/
子目录下

当试图在另一个派生中使用它时(在我的例子中是qt-one),链接器看不到它

哈斯克尔·尼克斯:

let
pkgs=import{};
在里面
pkgs.haskellPackages.callCabal2nix“roman”。/。{}
Qt-nix:

let
pkgs=import{};
romanEngine=import../engine/default.nix;
在里面
pkgs.qt5.mk{
name=“roman gui”;
src=./。;
nativeBuildInputs=[
pkgs.qt5.qmake
];
构建输入=[
pkgs.qt5.qtbase
罗马引擎
];
}
链接器错误:

/nix/store/b10shv9yqbgps47y0n8x7l7bq8fmp1i6-binutils-2.31.1/bin/ld: cannot find -lroman

如何才能正确链接到我构建的外部库?

这是未经测试的,但可能会找到解决方案

stdenv
将链接器配置为在
/lib
中查找。也许你可以把你的LIB符号链接到那里

let
pkgs=import{};
继承(pkgs.haskell.lib)重写bal;
generatedPkg=pkgs.haskellPackages.callCabal2nix“roman”。/。{};
在里面
覆盖bal生成的pkg(
drv:{
安装后=(drv.postInstall或“”)+“”
ln-s$out/lib/ghc-*/*$out/lib
#或者类似于使链接器在
#期待他们
'';
}
)