2013-04-30 8 views
7

मुझे ओएस एक्स शेर पर hmatrix library बनाने में परेशानी हो रही है। .cabal फ़ाइल को देखते हुए, इसे gsl लाइब्रेरी की आवश्यकता होती है, इसलिए मैंने इसे मैकपोर्ट के साथ स्थापित किया। .a फ़ाइलें/opt/local/lib में हैं और .h फ़ाइलें/opt/local/include/gslहास्केल पैकेज गायब सी पुस्तकालय

सुझाए गए अनुसार here मैंने बिल्ट-टाइप को कस्टम से सरल में बदल दिया। (उस परिवर्तन के बिना मुझे एक समान त्रुटि मिलती है)।

जब मैं 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 की कोशिश की, लेकिन मैं अभी भी एक ही त्रुटि मिलती है। मैं एक सी प्रोग्राम को संकलित और लिंक कर सकता हूं जिसमें जीएसएल शामिल है। कैबल किस फाइल की तलाश में है? अगर मेरे पास सही फाइलें हैं, तो मैं उन्हें कैसे बता सकता हूं कि उन्हें कैसे ढूंढें?

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 ++ इंस्टॉल है? मुझे एक अलग पुस्तकालय स्थापित करना और समान अजीब त्रुटि संदेश मिलना याद है (यह सी पुस्तकालयों को भी नहीं ढूंढ रहा था जो स्पष्ट रूप से स्थापित थे); बाद में यह पता चला कि इसे जी ++ की भी आवश्यकता है। –

+0

मेरे पास g ++ स्थापित है। – munk

+1

क्या आपने विफल होने वाले चरण को देखने के लिए 'cabal install -v hmatrix' को आजमाया है? यह इस मुद्दे को कम करने में मदद कर सकता है। –

उत्तर

2

मैक-पोर्ट्स के विकल्प के रूप में आप मैक के लिए nix पैकेज प्रबंधक का उपयोग कर सकते हैं। यह सी निर्भरताओं की देखभाल करने के लिए पुस्तकालयों के लिए उपलब्ध कराने का एक बहुत अच्छा काम करता है। आम तौर पर मैक पर किसी अन्य पैकेज मैनेजर के साथ मैं इससे अधिक खुश हूं।

दुर्भाग्यवश लिनक्स के विपरीत मैक (डार्विन) में निक्स के माध्यम से कई द्विआधारी उपलब्ध नहीं हैं इसलिए ghc इंस्टॉल करना अक्सर इसका संकलन करने का इंतजार कर रहा है।

nix की स्थापना के बाद GHC और hmatrix स्थापित करने के लिए आदेश दिए गए हैं:

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

जरूरत निर्भरता के सभी आप के लिए का ध्यान रखा जाना होगा।

मैंने इसे अपने मैकबुक समर्थक पर अभी कोशिश की है और tutorial के पहले कुछ पृष्ठों से आदेशों का प्रयास करने के बाद हैमट्रिक्स ghci में सही ढंग से काम कर रहा है।

+0

मैंने निक्स का उपयोग नहीं किया, लेकिन जब मैंने इसे बनाने की कोशिश की, तो मैंने जीसीसी के संस्करणों के साथ विसंगति का पता लगाया। यह निश्चित रूप से मुझे समाधान के लिए नेतृत्व करते हैं। धन्यवाद! – munk

+0

@usmcs बहुत खुश है इससे मदद मिली। – Davorak

1

मैं नहीं कर रहा हूँ एक मैक व्यक्ति है, लेकिन यह वास्तव में आप हेवन की तरह लगता है ' टी "-dev" संस्करण स्थापित नहीं किया। मैक के लिए, मुझे संदेह है कि आपको के अतिरिक्त gsl-devel इंस्टॉल करने की आवश्यकता है। यदि समस्या बनी रहती है, तो सत्यापित करें कि आपके लाइब्रेरी पथ पर libgsl0-dev है।

+0

मैंने 'पोर्ट इंस्टॉल जीएसएल-डेवेल + सार्वभौमिक 'के साथ -dev संस्करण स्थापित किया था। मैं libgsl0-dev स्थान की जांच करूंगा। – munk

+0

मेरे पास libsl0-dev मेरे सिस्टम पर कहीं भी नहीं है। क्या यह libgsl से अलग बनाता है? – munk

+0

हम्म। क्या आपके पास 'libgsl? -dev' रूप का कोई फ़ाइल नाम है?मुझे नहीं पता कि 'libgsl0-dev' में' 0' महत्वपूर्ण है या नहीं, लेकिन मुझे लगता है कि '-dev' बिट है। आम तौर पर आपको इसके खिलाफ कोई भी विकास करने के लिए लाइब्रेरी के '-dev' संस्करण की आवश्यकता होती है। शायद 'जीएसएल-डेवेल' की स्थापना के साथ कुछ गलत हो गया। – mhwombat

संबंधित मुद्दे