如何在没有 cabal 的情况下在 haskell 中设置 sdl2? (Linux)

问题描述 投票:0回答:1

haskell 初学者在这里。 (操作系统:WSL Debian)

我想设置 sdl2,以便我可以使用 haskell 编译 sdl2。

当我第一次尝试使用 SDL2 进行编译时,出现以下错误:

$ cat sdl2_test.hs 
import SDL

main :: IO ()
main = do
...

$ ghc sdl2_test.hs -lsdl2
[1 of 2] Compiling Main             ( sdl2_test.hs, sdl2_test.o )

sdl2_test.hs:1:1: error:
    Could not find module ‘SDL’
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
  |
1 | import SDL
  | ^^^^^^^^^^

当我编译包含SDL2的C程序时,它会自动工作,但在haskell中不起作用。

然后我了解到我需要为 SDL2 导入不同的模块才能使用 haskell 进行编译,但它需要“cabal”。

如何在不使用 cabal 的情况下使用 sdl2 编译 haskell 文件?

haskell sdl-2
1个回答
0
投票

注意: 以下答案假设您使用的是官方 Debian

ghc
软件包。 如果不是,请使用有关如何安装 Haskell 的一些信息(例如,使用 GHCup 或其他方法)更新您的问题。

无论如何,如果您使用 Debian

ghc
软件包进行 Haskell 安装,那么最简单的方法就是安装兼容的
libghc-sdl2-dev
Debian 软件包。 这包括缺少的
SDL
模块,并且还将安装您需要的所有库依赖项(尽管如果您安装了
libsdl2-dev
,大多数应该已经安装)。

在新安装的 Debian bookworm 上,我安装了

ghc
libghc-sdl2-dev
,然后准备启动
ghci
并导入
SDL
模块:

$ apt install ghc libghc-sdl2-dev
...
$ ghci
GHCi, version 9.0.2: https://www.haskell.org/ghc/  :? for help
ghci> import SDL
ghci>

我还编译了一个测试文件:

$ cat sdl2_test.hs
import SDL

main :: IO ()
main = initializeAll
$ ghc sdl2_test.hs
[1 of 1] Compiling Main               ( sdl2_test.hs, sdl2_test.o)
Linking sdl2_test ...
$ ./sdl2_test
$

警告: 您不应该-lsdl2

 添加到 
ghc
 命令行。  (这只会导致错误。)由于程序中的 
import SDL
 行,GHC 将自动链接到正确的库。

© www.soinside.com 2019 - 2024. All rights reserved.