8

NixOS の GL で問題が発生しています。問題は古いようですが、2017 年にはまだ簡単な解決策はありません。

Glossライブラリを使用してHaskellプログラムを構築しようとしています。glossを使用して必要なものをすべてインストールしましたnix-shell -p mesaが、適切にビルドおよびインストールされているようです (を使用cabal install)。ただし、同じプログラムをビルドしてnix-shellも機能しません。

$ nix-shell -p mesa_glu

[nix-shell:]$ ghc --make -O2 SnakePar.hs
Linking SnakePar ...

[nix-shell:]$ ./SnakePar 
SnakePar: user error (unknown GLUT entry glutInit)

nix-shellリンクステージの外で作業している間、失敗します:

$ ghc --make -O2 SnakePar.hs
[1 of 1] Compiling Main             ( SnakePar.hs, SnakePar.o )
Linking SnakePar ...
/nix/store/<hash>-binutils-2.27/bin/ld: cannot find -lGLU
/nix/store/<hash>-binutils-2.27/bin/ld: cannot find -lGL
collect2: error: ld returned 1 exit status
`cc' failed in phase `Linker'. (Exit code: 1)

gluこれは、ライブラリを手動でインストールした場合でも発生しnix-env -iAます。

$ nix-env -q
cabal-install-1.24.0.0
ghc-8.0.1
glu-9.0.0

freeglutorを同じ方法で使用してみmesaましたが、これらのどれも (またはすべて一緒に) も機能しませんでした。

私は何が欠けていますか?

この質問は関連していますが、役に立ちません: nixos + haskell + opengl (前提条件)

解決策:スタックに切り替えると、すべてが機能します。

4

2 に答える 2

1

以下は私を助けました:

with import <nixpkgs> {};
pkgs.stdenv.mkDerivation rec {
  name = "dev-env";
  buildInputs = with pkgs; [
    mesa
    freeglut
  ];
  LD_LIBRARY_PATH = with pkgs; "${freeglut}/lib";
}

これを にコピーしshell.nix、 で環境に入り、nix-shellenv 内でコンパイル済みの実行可能ファイルを実行します。

于 2018-10-31T23:48:33.917 に答える