Re: [gtk-osx-devel] Linking on El Capitan



On Wed, Feb 17, 2016 at 5:25 PM John Ralls <jralls ceridwen us> wrote:

> On Feb 17, 2016, at 10:27 AM, philip chimento gmail com wrote:
>
> I've run into a problem linking with ICU since upgrading to El Capitan. I've pasted some example output from building webkit2gtk3 below, but I have seen this as well on other modules that depend on icu.
>
> This only happens when generating introspection data, not when linking the actual libraries.
>
> [ 99%] Generating ../../WebKit2-4.0.gir
> dyld: Library not loaded: libicui18n.54.dylib
>   Referenced from: /my/jhbuild/checkout/webkitgtk-2.10.4/lib/libwebkit2gtk-4.0.37.dylib
>   Reason: image not found
> Command '[u'/my/jhbuild/checkout/webkitgtk-2.10.4/Source/WebKit2/tmp-introspectilkK_K/WebKit2-4.0', u'--introspect-dump=/my/jhbuild/checkout/webkitgtk-2.10.4/Source/WebKit2/tmp-introspectilkK_K/functions.txt,/my/jhbuild/checkout/webkitgtk-2.10.4/Source/WebKit2/tmp-introspectilkK_K/dump.xml']' returned non-zero exit status -5
> make[2]: *** [WebKit2-4.0.gir] Error 1
>
> Looking at the library I see that other libraries are referenced by their full path, but ICU is not:
>
> $ otool -L lib/libwebkit2gtk-4.0.37.dylib
> lib/libwebkit2gtk-4.0.37.dylib:
> /my/jhbuild/checkout/webkitgtk-2.10.4/lib/libwebkit2gtk-4.0.37.dylib (compatibility version 37.0.0, current version 37.11.7)
> /my/jhbuild/install/lib/libgtk-3.0.dylib (compatibility version 1601.0.0, current version 1601.7.0)
> /my/jhbuild/install/lib/libgdk-3.0.dylib (compatibility version 1601.0.0, current version 1601.7.0)
> [...snip...]
> libicui18n.54.dylib (compatibility version 54.0.0, current version 54.1.0)
> /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)
> libicuuc.54.dylib (compatibility version 54.0.0, current version 54.1.0)
> [...snip...]
>
> (local paths redacted to /my/jhbuild/checkout and /my/jhbuild/install)
>
> So I wonder if DYLD_LIBRARY_PATH is getting clobbered by SIP somewhere on the way to the g-ir-scanner tool. I am using a jhbuild-built bash in jhbuild, not /bin/bash.

Probably. Bash isn't the only thing that SIP affects: Pretty much anything in /bin or /usr/bin will have DYLD environment variables stripped, including Python and Perl.

Run otool -L on libicuuc. The problem may be its install_name rather than with g-ir-scanner.

Just to get back to you on this, indeed, it was libicuuc's install_name. Luckily ICU has a configure option to put full install paths into the install_name, I'll send a patch soon.

If anyone else has this problem, remember to uninstall, cleanone, and buildone -af icu. If you don't uninstall first, your libicui18n library will link against the still-installed version with the incorrect install_name, and things still won't work.

Regards,
Philip


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]