Boost logo

Boost-Build :

Subject: Re: [Boost-build] Building on OSX with link=shared
From: Ian Emmons (ian_at_[hidden])
Date: 2016-01-18 23:43:54


> On Jan 15, 2016, at 2:27 PM, Robert Ramey <ramey_at_[hidden]> wrote:
>
> Does no one know how to do this? Have boost shared libraries ever been tested on OSX?
>
>
> On 1/14/16 4:28 PM, Robert Ramey wrote:
>> I'm trying to build and test the serialization library on my OSX
>> machine. This works fine when I use link=static. But when I'm using
>> link=shared - I get the following message.
>>
>> ../../../tools/library_status/library_test.sh -j4 toolset=clang-03
>> variant=debug link=shared test_iterators >b2.log &
>>
>> dyld: Library not loaded: @rpath/libboost_filesystem.dylib
>> Referenced from:
>> /Users/robertramey/WorkingProjects/modular-boost/libs/serialization/test/../../../bin.v2/libs/serialization/test/test_iterators.test/clang-darwin-03/debug/test_iterators
>>
>> Reason: image not found
>> Trace/BPT trap: 5
>>
>> It seems that the test programs are not finding the shared libraries
>> being built.
>>
>> Does anyone know what the most convenient way to fix this is. If I
>> recall, it used to work sometime ago.
>>
>> Robert Ramey

Robert,

Sorry for the delay, but I've been working too hard to check my home email for a few days.

I ran into this problem recently as well. It seems to be related to changes in OSX made in the last major release, version 10.11, a.k.a. El Capitan. One set of changes went under the heading of System Integrity Protection (SIP) [1, 2]. Among the changes was disabling DYLD_LIBRARY_PATH and other environment variables related to the dynamic linker (dyld).

I solved this by first building Boost's and my shared libraries in the normal way, and then using install_name_tool to change the install names of the resulting .so files. You can find discussions of install names, how they are used to load shared libraries, and how they can be changed in [3, 4, 5].

I know that's not a simple recipe for success, but I hope it gets you on the right path.

-Ian

[1] https://en.wikipedia.org/wiki/System_Integrity_Protection
[2] https://developer.apple.com/library/mac/documentation/Security/
    Conceptual/System_Integrity_Protection_Guide/Introduction/
    Introduction.html
[3] https://developer.apple.com/library/mac/documentation/
    DeveloperTools/Conceptual/DynamicLibraries/100-Articles/
    RunpathDependentLibraries.html
[4] https://blogs.oracle.com/dipol/entry/dynamic_libraries_rpath_and_mac
[5] https://wincent.com/wiki/@executable_path,_@load_path_and_@rpath


Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk