A macOS static linking mystery

Viktor Dukhovni ietf-dane at dukhovni.org
Mon Aug 8 13:59:48 UTC 2022


On Mon, Aug 08, 2022 at 07:29:38AM -0400, Ryan Scott wrote:

> An exception to this rule is macOS, however. On macOS, building libffi
> always appears to default to linking against the static version of libffi,
> even when a dynamic version is also available. To reproduce this
> phenomenon, check out libffi [1] and run the following commands:
> 
>     $ brew install libffi # If it is not already installed
>     $ cabal build ctime
>     $ otool -L $(cabal list-bin ctime)

What is the output of

    $ pkg-config --libs libffi

on this system?  If "cabal" passes any additional flags to "pkg-config"
use those as well.

On my MacOS laptop I get:

    $ /usr/local/bin/pkg-config --libs libffi
    -lffi

which does not use the "brew"-installed libffi.  Not surprising, since
/usr/local/lib/pkgconfig/ has no symlink to the "libffi.pc" file.

> This is exceedingly strange, since my Hombrew installation does in fact
> provide libffi.dylib:
> 
>     $ ls -alh ~/Software/homebrew/Cellar/libffi/3.4.2/lib/
> [...]
>     drwxr-xr-x   3 rscott  1340850540    96B Aug  7 08:51 pkgconfig

For "pkg-config" to find the HomeBrew "libffi", there would need to be
a "libffi.pc" symlink to the one in the "pkgconfig" directory.

Perhaps there are additional steps to perform in HomeBrew to activate
this "libffi" as a default target for "pkg-config".

-- 
    Viktor.


More information about the ghc-devs mailing list