Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell栈与C库II_Haskell_Ghc_Ffi_Haskell Stack - Fatal编程技术网

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