1

今天为了编译一个在 C++ 中使用的 haskell 库,我使用堆栈 ghc:

stack ghc -- -c -dynamic -fPIC -XHaskell2010 -XOverloadedStrings TestFFI.hs

stack ghc -- --make -dynamic -shared -fPIC -XHaskell2010 -XOverloadedStrings TestFFI.hs -o libTestFFI.so

gcc -fPIC -c test.c -I`stack ghc -- --print-libdir`/include

stack ghc --package Test -- -o libTest.so -shared -dynamic -fPIC TestFFI.o -lHSrts-ghc8.0.2 -lHStimezone-olson-0.1.7-Ib9s8yi63Kn858Rr44Ixqe-ghc8.0.2 test.o

它可以工作,但是部署有问题,当我在生成的库上使用 ldd 命令时,所有路径都指向我的 HOME 文件夹,我想生成一个具有静态依赖项的静态库,以避免在用户上安装 Haskell系统。

Ps:我将在 C++ 代码上使用 Haskell 库,但 Haskell FFI 仅适用于 C。

4

0 回答 0