Dynamic libraries not of required architecture when installing via cabal (Snow Leopard)

I'm on Snow Leopard, so I've read numerous posts on the subject of GHC and it's Snow Leopard (non-)compatibility. I've got most things working - I can do a 'cabal update' - something that gave errors before. GHC itself seems to be working fine. I want to install the SDL package from Hackage, which I first tried doing like this: 'cabal install sdl' which gives a bunch of warnings, all looking like this 'ld: warning: in /opt/local/lib/libSDL.dylib, file is not of required architecture' with 'libSDL.dylib' replaced with various *.a and *.dylib files I then found this in a Usenet post about Snow Leopard breaking GHC: -- Once cabal works, options --ld-option=-m32 (and also --gcc-option=- m32) may be used. These options may also be passed to "./Setup configure" And tried this: (I think maybe my problem is that I'm not passing these flags correctly to cabal) 'cabal install sdl --ld-options="-arch i386" --gcc-option=-m32 -- reinstall' Well I get the same errors, well warnings actually. Can I just ignore these warnings? When compiling my small sample code: import Prelude import Graphics.UI.SDL as SDL main = do SDL.init [InitEverything] setVideoMode 640 480 32 [] I again get the warnings: ld: warning: in /opt/local/lib/libSDL.dylib, file is not of required architecture ld: warning: in /opt/local/lib/libSDLmain.a, file is not of required architecture and then a bunch of undefined symbols such as: _SDL_Init _SDL_SetClipRect Well this post basically based on the assumption that the warnings are breaking the SDL library and thereby keeping my code from compiling - so how do I fix those warnings? - Sorry for the long mail Malthe

On Nov 15, 2009, at 11:42 , Malthe Jørgensen wrote:
which gives a bunch of warnings, all looking like this 'ld: warning: in /opt/local/lib/libSDL.dylib, file is not of required architecture' with 'libSDL.dylib' replaced with various *.a and *.dylib files
This is ld saying it can only find the 64-bit versions of libraries; ghc currently requires the 32-bit libraries. You need to rebuild MacPorts with support for both i386 and x86-64 architectures: add to /opt/local/etc/macports.conf: universal_archs i386 x86_64 add to /opt/local/etc/variants.conf +universal then follow the directions at http://trac.macports.org/wiki/Migration to rebuild MacPorts. -- brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allbery@kf8nh.com system administrator [openafs,heimdal,too many hats] allbery@ece.cmu.edu electrical and computer engineering, carnegie mellon university KF8NH
participants (2)
-
Brandon S. Allbery KF8NH
-
Malthe Jørgensen