链接到Haskell中的SDL和其他库

时间:2009-12-22 21:02:07

标签: haskell linker sdl

如何告诉ghc告诉ld将已编译的二进制文件链接到SDL库?

我有一个source.hs:

    import Prelude
    import Graphics.UI.SDL as SDL
    import Data.Maybe
    import GHC.Word
    import Control.Applicative
    ...

当我这样做时:

    ghc source.hs

我得到了一堆与此类似的链接错误:

    pong.o: In function `s1Ww_info':
    (.text+0x449): undefined reference to `SDLzm0zi5zi9_GraphicsziUIziSDLziRect_Rect_con_info'

我做错了什么?

2 个答案:

答案 0 :(得分:6)

如果由于某种原因您不想使用GHC的--make选项,这应该有效:ghc source.hs -lSDL -package SDL

如果您需要某些非核心SDL子库,则必须单独包含这些子库,例如ghc source.hs -lSDL -SDL_ttf -package SDL -package SDL-ttf

您可能还需要考虑使用cabal(Haskell打包系统)设置构建文件,特别是如果您的程序扩展到几个源文件之外。

还有一句警告 - 您没有提到您正在使用的操作系统,但上次我尝试使用Haskell的SDL绑定只能在Linux上“开箱即用” - Windows和OS X都会导致它问题,由于SDL在这些平台上启动时使用的丑陋黑客。

答案 1 :(得分:3)

添加--make,其中包括链接阶段。