Ссылки на SDL и другие библиотеки в Haskell - PullRequest
3 голосов
/ 23 декабря 2009

Как сказать 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 ]

6 голосов
/ 23 декабря 2009

Если по какой-то причине вы не хотите использовать опцию GHC --make, это должно работать: ghc source.hs -lSDL -package SDL

Если вам нужны некоторые неосновные суббиблиотеки SDL, вам придется включать их отдельно, например, ghc source.hs -lSDL -SDL_ttf -package SDL -package SDL-ttf

Вы также можете рассмотреть возможность создания файла сборки с использованием Cabal, системы упаковки Haskell, особенно если ваша программа выходит за пределы пары исходных файлов.

И предостережение - вы не упомянули, какую операционную систему вы используете, но в прошлый раз, когда я пробовал привязки SDL в Haskell, в Linux работали только "из коробки" - и Windows, и OS X вызывают это проблемы из-за неприятного хака, который SDL использует при запуске на этих платформах.

3 голосов
/ 23 декабря 2009

Добавить --make, который включает в себя этап связывания.

...