如何告诉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'
我做错了什么?
答案 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
,其中包括链接阶段。