के साथ एक सी पुस्तकालय जोड़ने मैं एक Haskell परियोजना है कि कुछ सी ++ बाइंडिंग बनाने के लिए करना है है। मैंने सी रैपर लिखे हैं और उन्हें स्टैंड-अलोन स्टेटिक लिंक्ड लाइब्रेरी में संकलित किया है।स्थिरता एक हास्केल पुस्तकालय
मैं हास्केल बाइंडिंग को स्थिर रूप से सी रैपर से लिंक करने के लिए लिखना चाहता हूं ताकि मुझे अलग-अलग सी रैपर वितरित करने की आवश्यकता न हो, लेकिन मुझे लगता है कि यह काम नहीं कर रहा है और कुछ मदद की सराहना करता है।
मैं एक अतिरिक्त पुस्तकालय के रूप में सी पुस्तकालय निर्दिष्ट लेकिन मेरे cabal build
कदम इसे जोड़ने के लिए आदेश संकलित करने के लिए प्रतीत नहीं होता।
मैं इस वर्णन करने के लिए (http://github.com/deech/CPlusPlusBindings) एक छोटी परियोजना बना लिया है।
यह एक छोटा सा सी ++ वर्ग (https://github.com/deech/CPlusPlusBindings/tree/master/cpp-src) शामिल हैं, सी आवरण (https://github.com/deech/CPlusPlusBindings/tree/master/c-src), एक काम सी परीक्षण दिनचर्या (https://github.com/deech/CPlusPlusBindings/tree/master/c-test) और हास्केल फ़ाइल (https://github.com/deech/CPlusPlusBindings/blob/master/src/BindingTest.chs)।
सी लाइब्रेरी को Setal.hs में जोड़ा गया है जो कैबल फ़ाइल में नहीं है क्योंकि इस तरह मेरे पास यह वास्तविक प्रोजेक्ट है जो सीडी लाइब्रेरी बनाता है जो कि बिल्ड चरण से पहले कैबल के माध्यम से "मेक" का उपयोग कर बनाता है। मैं सत्यापित किया है निर्माण में कदम कि BuildInfo
की extraLibs
हिस्सा पुस्तकालय का नाम शामिल है और extraLibDirs
सही निर्देशिका में शामिल है।
मेरी cabal build
के उत्पादन में है:
creating dist/setup
./dist/setup/setup build --verbose=2
creating dist/build
creating dist/build/autogen
Building CPlusPlusBinding-0.1.0.0...
Preprocessing library CPlusPlusBinding-0.1.0.0...
Building library...
creating dist/build
/usr/local/bin/ghc --make -fbuilding-cabal-package -O -odir dist/build -hidir dist/build -stubdir dist/build -i -idist/build -isrc -idist/build/autogen -Idist/build/autogen -Idist/build -I/home/deech/Old/Haskell/CPlusPlusBinding/c-src -I/home/deech/Old/Haskell/CPlusPlusBinding/cpp-includes -optP-include -optPdist/build/autogen/cabal_macros.h -package-name CPlusPlusBinding-0.1.0.0 -hide-all-packages -package-db dist/package.conf.inplace -package-id base-4.6.0.1-8aa5d403c45ea59dcd2c39f123e27d57 -XHaskell98 -XForeignFunctionInterface BindingTest
Linking...
/usr/bin/ar -r dist/build/libHSCPlusPlusBinding-0.1.0.0.a dist/build/BindingTest.o
/usr/bin/ar: creating dist/build/libHSCPlusPlusBinding-0.1.0.0.a
/usr/bin/ld -x --hash-size=31 --reduce-memory-overheads -r -o dist/build/HSCPlusPlusBinding-0.1.0.0.o dist/build/BindingTest.o
In-place registering CPlusPlusBinding-0.1.0.0...
/usr/local/bin/ghc-pkg update - --global --user --package-db=dist/package.conf.inplace
दुर्भाग्य से न तो संकलन है और न ही जोड़ने कदम सी पुस्तकालय का उपयोग करता है। कोई अन्य चेतावनियां या त्रुटियां नहीं हैं।