Haskell栈与C库II
这是(不幸的)的后续行动 我正在尝试Haskell栈与C库II,haskell,ghc,ffi,haskell-stack,Haskell,Ghc,Ffi,Haskell Stack,这是(不幸的)的后续行动 我正在尝试stack build一个项目,其中Main.hs对一个专有的C库libMyLib.so,位于/usr/local/lib(包含在LD\u library\u路径中) 在GHCi(堆栈外部)中使用命令GHCi/usr/local/lib/-lMyLib运行时,一切正常 但是,在运行堆栈构建时,我遇到了一个与链接相关的问题: me@user:~/myproject$ stack build myproject-0.1.0.0: build Preprocess
stack build
一个项目,其中Main.hs
对一个专有的C库libMyLib.so
,位于/usr/local/lib
(包含在LD\u library\u路径中)
在GHCi(堆栈外部)中使用命令GHCi/usr/local/lib/-lMyLib
运行时,一切正常
但是,在运行堆栈构建时,我遇到了一个与链接相关的问题:
me@user:~/myproject$ stack build
myproject-0.1.0.0: build
Preprocessing library myproject-0.1.0.0...
In-place registering myproject-0.1.0.0...
Preprocessing executable 'myproject-exe' for myproject-0.1.0.0...
Linking .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/myproject-exe/myproject-exe ...
/usr/bin/ld: .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/myproject-exe/myproject-exe-tmp/Main.o: undefined reference to symbol 'mycfunction'
/usr/local/lib/libMyLib.so.2: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
-- While building package myproject-0.1.0.0 using:
/home/me/.stack/setup-exe-cache/x86_64-linux/setup-Simple-Cabal-1.22.5.0-ghc-7.10.3 --builddir=.stack-work/dist/x86_64-linux/Cabal-1.22.5.0 build lib:myproject exe:myproject-exe --ghc-options " -ddump-hi -ddump-to-file"
Process exited with code: ExitFailure 1
以下是相关阴谋集团文件的附加部分:
library
hs-source-dirs: src
exposed-modules: Lib
build-depends: base >= 4.7 && < 5
default-language: Haskell2010
extra-libraries: MyLib
executable myproject-exe
hs-source-dirs: app
main-is: Main.hs
ghc-options: -threaded -rtsopts -with-rtsopts=-N
build-depends: base, bytestring, safe, split
, myproject
default-language: Haskell2010
你能增加构建的详细程度吗?LD_LIBRARY_路径与链接无关,只会增加混乱。我建议改用-rpath
。您的链接器命令需要获取-L/usr/local/lib
,但这似乎没有发生。猜测:stack build--extra lib dirs=/usr/local/lib
。这行吗?@n.m和Sibi谢谢你的建议。我按照建议试了试,但没有成功。但我最终找到了问题的症结所在:我需要添加一个额外的库依赖项,我将在edit.Hmm中描述它。“需要添加一个额外的库依赖项”-这是我最初的想法,并对此进行了评论。删除了评论,因为它似乎有问题。你为什么不自己回答问题而不是编辑?
extra-libraries: Other, MyLib