If someone could give me some clues about how to debug this it would be
great.
I'm trying to figure out why "it" fails to load a particular dylib under
macOS.
"it" meaning that I'm not sure who is actually failing, but I suspect it is
actually a failure detected and reported by dlopen(3) itself, rather than
something wrong in cffi.
The problem seems to be that loading libgdk-x11-2.0.0.dylib triggers a
complaint about a library I have loaded from a different place, but the
error message indicates a location I have not loaded my LD_LIBRARY_PATH.
Could it possibly be that libgdk-x11-2.0.0.dylib has a hard coded path in
it pointing to /usr/local/lib ?
If someone could give me some clues about how to debug this it would be
great.
I've set up my LD_LIBRARY_PATH so that it seems to be loading the correct
libcairo.2.dylib from /usr/local/Cellar/cairo/1.12.16_1/lib/libcairo.2.dylib.
The reason I think this is because both vmmap (unix command line) and
cffi::list-foreign-libraries (lisp) give compatible results.
sh> vmmap -w 16787 | grep dylib | sed -e 's/^.*SM=... //' | grep cairo
/usr/local/Cellar/cairo/1.14.6_1/lib/libcairo.2.dylib
sh>
and
CL-USER> (cffi::list-foreign-libraries)
(...
#<CFFI:FOREIGN-LIBRARY
:LIBCAIRO #P"/usr/local/Cellar/cairo/1.12.16_1/lib/libcairo.dylib"
(truename=#P"/usr/local/Cellar/cairo/1.12.16_1/lib/libcairo.2.dylib")>)
CL-USER>
However, when I attempt to load libgdk-x11-2.0.0.dylib it complains that it
cannot find a particular symbol in /usr/local/lib/libcairo.dylib. Why is
it complaining about /usr/local/lib/libcairo.dylib?
Unable to load any of the alternatives:
("libgdk-x11-2.0.0.dylib" "libgdk-x11-2.0.dylib")
Attempting to load GDK::GDK from lib "libgdk-x11-2.0.dylib"
(%LOAD-FOREIGN-LIBRARY GDK
/usr/local/Cellar/gtk+/2.24.24/lib/libgdk-x11-2.0.0.dylib)
Unable to load foreign library (GDK::GDK).
Error opening shared object
"/usr/local/Cellar/gtk+/2.24.24/lib/libgdk-x11-2.0.0.dylib":
dlopen(/usr/local/Cellar/gtk+/2.24.24/lib/libgdk-x11-2.0.0.dylib, 10):
Symbol not found: _cairo_xlib_surface_create
Referenced from: /usr/local/Cellar/gtk+/2.24.24/lib/libgdk-x11-2.0.0.dylib
Expected in: /usr/local/lib/libcairo.dylib
in /usr/local/Cellar/gtk+/2.24.24/lib/libgdk-x11-2.0.0.dylib.
Attempting to load GDK::GDK from lib "libgdk-x11-2.0.0.dylib"
(%LOAD-FOREIGN-LIBRARY GDK
/usr/local/Cellar/gtk+/2.24.24/lib/libgdk-x11-2.0.0.dylib)
Unable to load foreign library (GDK::GDK).
Error opening shared object
"/usr/local/Cellar/gtk+/2.24.24/lib/libgdk-x11-2.0.0.dylib":
dlopen(/usr/local/Cellar/gtk+/2.24.24/lib/libgdk-x11-2.0.0.dylib, 10):
Symbol not found: _cairo_xlib_surface_create
Referenced from: /usr/local/Cellar/gtk+/2.24.24/lib/libgdk-x11-2.0.0.dylib
Expected in: /usr/local/lib/libcairo.dylib
in /usr/local/Cellar/gtk+/2.24.24/lib/libgdk-x11-2.0.0.dylib.
[Condition of type CFFI:LOAD-FOREIGN-LIBRARY-ERROR]