2013-04-30 21 views
7

OS X Lionでhmatrix libraryをビルドできません。 .cabalファイルを見ると、gslライブラリが必要なので、私はそれをmacportsでインストールしました。 .aファイルは/ opt/local/libにあり、.hファイルは/ opt/local/include/gslにあります。ハスケルパッケージにCライブラリがありません

私は組み込みタイプをカスタムからシンプルに変更しました。 (そのような変更がなければ私は似たようなエラーになります)。

私はcabal configureを使用すると、私は次のような出力が得られます。

* Missing C library: gsl 
This problem can usually be solved by installing the system package that 
provides this library (you may need the "-dev" version). If the library is 
already installed but in a non-standard location then you can use the flags 
--extra-include-dirs= and --extra-lib-dirs= to specify where it is. 

だから私はcabal --extra-include-dirs=/opt/local/include --extra-lib-dirs=/opt/local/lib configureを試してみましたが、私はまだ同じエラーを取得します。私はgslを含むcプログラムをコンパイルしてリンクすることができます。カバールはどのファイルを探していますか?適切なファイルがある場合、どのようにファイルを見つけるかを教えてください。

libgsl.aはユニバーサルバイナリである:それは64ビットだよう

$ file /opt/local/lib/libgsl.a 
    /opt/local/lib/libgsl.a: Mach-O universal binary with 2 architectures 
    /opt/local/lib/libgsl.a (for architecture x86_64): current ar archive random library 
    /opt/local/lib/libgsl.a (for architecture i386): current ar archive random library 

GHCはなります

$ ghc --info 
[("Project name","The Glorious Glasgow Haskell Compilation System") 
,("GCC extra via C opts"," -fwrapv") 
,("C compiler command","/usr/bin/llvm-gcc") 
,("C compiler flags"," -m64 -fno-stack-protector -m64") 
,("ar command","/usr/bin/ar") 
,("ar flags","clqs") 
,("ar supports at file","NO") 
,("touch command","touch") 
,("dllwrap command","/bin/false") 
,("windres command","/bin/false") 
,("perl command","/usr/bin/perl") 
,("target os","OSDarwin") 
,("target arch","ArchX86_64") 
,("target word size","8") 
,("target has GNU nonexec stack","False") 
,("target has subsections via symbols","True") 
,("Project version","7.4.2") 
,("Booter version","7.4.2") 
,("Stage","2") 
,("Build platform","x86_64-apple-darwin") 
,("Host platform","x86_64-apple-darwin") 
,("Target platform","x86_64-apple-darwin") 
,("Have interpreter","YES") 
,("Object splitting supported","NO") 
,("Have native code generator","YES") 
,("Support SMP","YES") 
,("Unregisterised","NO") 
,("Tables next to code","YES") 
,("RTS ways","l debug thr thr_debug thr_l thr_p dyn debug_dyn thr_dyn thr_debug_dyn") 
,("Leading underscore","YES") 
,("Debug on","False") 
,("LibDir","/usr/local/Cellar/ghc/7.4.2/lib/ghc-7.4.2") 
,("Global Package DB","/usr/local/Cellar/ghc/7.4.2/lib/ghc-7.4.2/package.conf.d") 
,("Gcc Linker flags","[\"-m64\"]") 
,("Ld Linker flags","[\"-arch\",\"x86_64\"]") 
] 
+0

暗闇での完全な撮影:g ++がインストールされていますか?私は別のライブラリをインストールして奇妙なエラーメッセージを受け取ったことを覚えています(それは明確にインストールされたCライブラリを見つけられませんでした)。後でg ++が必要であることが判明しました。 –

+0

g ++がインストールされています。 – munk

+1

'cabal install -v hmatrix'を試して失敗したステップを見ましたか?それは問題の絞り込みに役立つかもしれません。 –

答えて

2

mac-portsの代わりに、nixというパッケージマネージャをmacに使用することができます。それはそれを通して利用可能なライブラリのためのc依存を世話するのはかなり良い仕事をします。一般的に、私はそれを他のパッケージマネージャーであるMacでもっと喜んでいます。

残念ながら、linuxとは異なり、mac(darwin)にはnixで利用可能なバイナリが多くないため、ghcをインストールするとコンパイルを待つことがよくあります。 NIXのインストール後にGHCとhmatrixをインストールする

コマンドは次のとおりです。

nix-env -iA nixpkgs-unstable.haskellPackages.ghc 
nix-env -iA nixpkgs-unstable.haskellPackages.hmatrix 

必要な依存関係のすべてはあなたのための世話をされます。

私はちょうど私のMacBook Proで試したところ、hmatrixはtutorialの最初の数ページからコマンドを試した後、ghciで正しく動作しているようです。

+0

私はnixを使用して終了しませんでしたが、ビルドしようとしたときに、使用していたgccのバージョンとの不一致を発見しました。これは間違いなく私を解決に導きます。ありがとう! – munk

+0

@usmcsとてもうれしかったです。 – Davorak

1

「私はマックの人ではないんだけど、それは本当にあなたの避難所のように聞こえます"-dev"バージョンをインストールしました。 Macの場合、gslに加えてgsl-develをインストールする必要があると思われます。問題が解決しない場合は、ライブラリパスにlibgsl0-devがあることを確認してください。

+0

'port install gsl-devel + universal'で-devバージョンをインストールしました。 libgsl0-devの場所を確認します。 – munk

+0

私はどこにでもlibgsl0-devを持っていません。これはlibgslと何が違うのですか? – munk

+0

Hmmm。 'libgsl?-dev'の形式のファイル名はありますか?私は 'libgsl0-dev'の' 0'が重要かどうか分かりませんが、 '-dev'ビットはだと思います。一般的には、開発のために '-dev'版のライブラリが必要です。 'gsl-devel'のインストールで何かが間違っていたかもしれません。 – mhwombat

関連する問題