Link 带有 Haskell 的外国 C 库
Link a foreign C library with Haskell
讨论 Haskell 的 FFI 的在线教程都使用本地定义的 C 文件制作简单示例,然后编译该文件并使用 Haskell 二进制文件 linked。我如何做一些更实质性的事情,比如,link 我的 Haskell 二进制文件和蓝牙库?
假设我在我的系统上安装了 BlueZ 和所需的开发人员库。在 C 中,我只需将标志 -lbluetooth
传递给 GCC,它就会按预期工作。我可以在我的 cabal 文件中将此标志传递给 Haskell 并期望我的 FFI 导入工作吗?
你的 cabal 文件中会有这样的东西:
library
exposed-modules: YourBluetoothBinding
build-depends: {- Haskell dependencies -}
c-sources: {- your own C files that may be needed -}
pkgconfig-depends: bluez
includes: bluetooth/bluetooth.h
extra-libraries: bluetooth
我不确定 pkgconfig-depends
是否对 Windows 做了任何事情。
讨论 Haskell 的 FFI 的在线教程都使用本地定义的 C 文件制作简单示例,然后编译该文件并使用 Haskell 二进制文件 linked。我如何做一些更实质性的事情,比如,link 我的 Haskell 二进制文件和蓝牙库?
假设我在我的系统上安装了 BlueZ 和所需的开发人员库。在 C 中,我只需将标志 -lbluetooth
传递给 GCC,它就会按预期工作。我可以在我的 cabal 文件中将此标志传递给 Haskell 并期望我的 FFI 导入工作吗?
你的 cabal 文件中会有这样的东西:
library
exposed-modules: YourBluetoothBinding
build-depends: {- Haskell dependencies -}
c-sources: {- your own C files that may be needed -}
pkgconfig-depends: bluez
includes: bluetooth/bluetooth.h
extra-libraries: bluetooth
我不确定 pkgconfig-depends
是否对 Windows 做了任何事情。