3
私がやろうとしていることは HaskellからFFI経由でC++(extern "C" { ... }
インターフェイス経由)を呼び出そうとしています。特に、私はC++ファイルthree.cpp
を持っています。その中にはHaskellからアクセスしようとしているC++の関数があります(バックグラウンドでは他のいくつかの非公開のC++コードがあります)。HaskellからC++を呼び出すときに `stack ghci`を実行する際に問題が発生しました。
問題:stack build
とstack test
を正常に実行でき、すべて正常に動作します。私はstack ghci
を実行したときしかし、私は次のエラーを取得する:
/usr/bin/ld: /home//Dropbox/Sling/.stack-work/dist/x86_64-linux/Cabal-1.24.0.0/build/Sling-exe/Sling-exe-tmp/src/three.o: relocation R_X86_64_32 against `.bss' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Nonrepresentable section on output
collect2: error: ld returned 1 exit status
`gcc' failed in phase `Linker'. (Exit code: 1)
おそらく必要な情報:次のように私のプロジェクトの.cabal
ファイルの関連部分が見えます:私には、しようとした方法を
executable Sling-exe
hs-source-dirs: app
main-is: Main.hs
ghc-options: -fPIC -threaded -rtsopts -with-rtsopts=-N
cc-options: -fPIC
extra-libraries: stdc++
build-depends: base
C-sources: src/three.cpp
Include-dirs: include
Includes: include/three.h
Install-includes: three.h
default-language: Haskell2010
お知らせ-fPIC
フラグですが失敗しました。助言がありますか?