[Haskell-cafe] Problems using ghc 7.8.2 with options -staticlib and -threaded on osx

Frode Nerbråten frode at nerbraten.no
Tue Jun 10 10:26:38 UTC 2014


On Tue, Jun 10, 2014 at 11:15 AM, Frode Nerbråten <frode at nerbraten.no> wrote:
> Thank you Bob! I tried your workaround (and fixed the lib path in my
> project) and it worked perfectly. Calling my Haskell functions from
> multiple ObjectiveC threads now works as expected. You saved my day :)
> I'll report this as a bug in GHC. Thank you for the source link.
> Regards,
> Frode
> On Mon, Jun 9, 2014 at 9:49 PM, Bob Ippolito <bob at redivi.com> wrote:
>> After patching your Xcode project file to use $(PROJECT_DIR) instead of
>> /Users/frode/dev/haskell/digipostarkiv I was able to build this. I changed
>> the "libtool command" in my lib/ghc-7.8.2/settings to a shim that removes
>> -lpthread and then calls /usr/bin/libtool. Not pretty but it worked, I'm
>> sure there's a better workaround, but I think the real solution should be to
>> simply special-case OSDarwin in the same way as OSiOS in GHC.
>> On Mon, Jun 9, 2014 at 12:33 PM, Bob Ippolito <bob at redivi.com> wrote:
>>> This seems like a bug, you shouldn't need to link to libpthread at all on
>>> Mac. /usr/lib/libpthread.dylib is just a symlink to libSystem… Not sure how
>>> to get around the issue without rebuilding GHC, it looks like iOS is special
>>> cased in the compiler (OSiOS) but not Mac OS X (OSDarwin) [1].
>>> [1]
>>> https://github.com/ghc/ghc/blob/master/compiler/main/DriverPipeline.hs#L1869-L1873
>>> On Mon, Jun 9, 2014 at 11:36 AM, Frode Nerbråten <frode at nerbraten.no>
>>> wrote:
>>>> Hi,
>>>> I'm having trouble building my Haskell library with GHC 7.8.2 and
>>>> Cabal on OSX 10.9.3 with both -staticlib and -threaded
>>>> enabled.
>>>> The library I'm building exports several functions using FFI to be
>>>> called from ObjectiveC in an Xcode project. This works fine with just
>>>> -staticlib enabled, but now I realize I need to call into my Haskell
>>>> library from multiple OS-threads simultaneously. But when I add
>>>> -threaded to ghc-options I get an error when linking:
>>>>     error: libtool: can't locate file for: -lpthread
>>>>     error: libtool: file: -lpthread is not an object file (not allowed
>>>> in a library)
>>>> The linker command that fails looks like this (... replaces a bunch of
>>>> -l and -L options):
>>>>     libtool -static -o liba.a dist/build/HsCocoa.o ... -lCffi -lpthread
>>>> In /usr/lib I have a libpthread.dylib that links to libSystem.dylib,
>>>> but no libpthread.a. I was under the impression that libpthread was
>>>> included with the system install.
>>>> Is this supposed to work or am I misunderstanding something basic? :)
>>>> Any help would be greatly appreciated!
>>>> The project source is available on github:
>>>> https://github.com/froden/digipostarkiv
>>>> (I asked the same question on stackoverflow:
>>>> http://stackoverflow.com/q/24096257/777411)
>>>> Best regards,
>>>> Frode Nerbråten
>>>> _______________________________________________
>>>> Haskell-Cafe mailing list
>>>> Haskell-Cafe at haskell.org
>>>> http://www.haskell.org/mailman/listinfo/haskell-cafe

More information about the Haskell-Cafe mailing list