Re: need help debugging wierd dlopen failure
Jim, loading a specific version of a shared library requires two things: a. Use absolute path to the library in the cffi lib spec b. Make sure the dependencies (see output of otool -L ) (the paths to the dependencies) are at the beginning of the paths set in the environment variable DYLD_LIBRARY_PATH. Best Frank -- Frank Gönninger DG1SBG Consequor Consulting AG > Am 20.09.2016 um 16:46 schrieb Jim Newton: > > Hi Frank, thanks for the information. If you always use /usr/local/lib then > what do you do when you need to run two different independent applications > which have different requirements? > >> On Tue, Sep 20, 2016 at 3:44 PM, Frank Goenninger wrote: >> Am 20.09.2016 um 15:32 schrieb Luís Oliveira : >> > >> > On Tue, Sep 20, 2016 at 10:53 AM, Jim Newton wrote: >> >> CL-USER> (cffi::list-foreign-libraries) >> >> (... >> >> #> >> :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? >> > >> > Most of those dylibs are symlinks and libgdk may depend on a name >> > which exists in /usr/local/lib but not /usr/local/Cellar, maybe? ldd >> > can tell you what a given dylib depends on. >> >> As Jim is on macOS there is no ldd. The command to use is >> >> otool -L /usr/local/lib//libcairo.dylib >> >> Seeing that Jim uses homebrew to install Cairo it is worth mentioning that >> brew install … also generates (normally) an entry in /usr/local/lib . That >> is why I always stick to using /usr/local/lib/libxyz.dylib paths when I want >> to ensure a particular library to be loaded. >> >> Best, >>Frank >> >> >> >
Re: need help debugging wierd dlopen failure
Hi Frank, thanks for the information. If you always use /usr/local/lib then what do you do when you need to run two different independent applications which have different requirements? On Tue, Sep 20, 2016 at 3:44 PM, Frank Goenningerwrote: > Am 20.09.2016 um 15:32 schrieb Luís Oliveira : > > > > On Tue, Sep 20, 2016 at 10:53 AM, Jim Newton > wrote: > >> CL-USER> (cffi::list-foreign-libraries) > >> (... > >> # >> :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? > > > > Most of those dylibs are symlinks and libgdk may depend on a name > > which exists in /usr/local/lib but not /usr/local/Cellar, maybe? ldd > > can tell you what a given dylib depends on. > > As Jim is on macOS there is no ldd. The command to use is > > otool -L /usr/local/lib//libcairo.dylib > > Seeing that Jim uses homebrew to install Cairo it is worth mentioning that > brew install … also generates (normally) an entry in /usr/local/lib . That > is why I always stick to using /usr/local/lib/libxyz.dylib paths when I > want to ensure a particular library to be loaded. > > Best, >Frank > > > >
Re: need help debugging wierd dlopen failure
Am 20.09.2016 um 15:32 schrieb Luís Oliveira: > > On Tue, Sep 20, 2016 at 10:53 AM, Jim Newton wrote: >> CL-USER> (cffi::list-foreign-libraries) >> (... >> #> :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? > > Most of those dylibs are symlinks and libgdk may depend on a name > which exists in /usr/local/lib but not /usr/local/Cellar, maybe? ldd > can tell you what a given dylib depends on. As Jim is on macOS there is no ldd. The command to use is otool -L /usr/local/lib//libcairo.dylib Seeing that Jim uses homebrew to install Cairo it is worth mentioning that brew install … also generates (normally) an entry in /usr/local/lib . That is why I always stick to using /usr/local/lib/libxyz.dylib paths when I want to ensure a particular library to be loaded. Best, Frank signature.asc Description: Message signed with OpenPGP using GPGMail
Re: need help debugging wierd dlopen failure
On Tue, Sep 20, 2016 at 10:53 AM, Jim Newtonwrote: > CL-USER> (cffi::list-foreign-libraries) > (... > #: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? Most of those dylibs are symlinks and libgdk may depend on a name which exists in /usr/local/lib but not /usr/local/Cellar, maybe? ldd can tell you what a given dylib depends on. Cheers, -- Luís Oliveira http://kerno.org/~luis/