On Jan 11, 2018, at 10:23, Michael wrote:

> On 2018-01-11, at 4:37 AM, Ryan Schmidt wrote:
> 
>> openssl provides libssl.1.0.0.dylib. The absolute path 
>> /opt/local/lib/libssl.1.0.0.dylib is baked into the lynx executable as a 
>> library that it needs in order to run. This is not special to lynx or 
>> openssl; this is how programs and libraries work on macOS.
> 
> How is it possible then to make a binary that can be distributed without that 
> binary being dependent on specific machine configurations?

To make a redistributable app, copy all the libraries into the application 
bundle, and use install_name_tool to change all their install_names and 
inter-library linkages to use a relative instead of absolute path (e.g. using 
"@loader_path" or "@rpath"). The dylibbundler program (installable via 
MacPorts) automates that.


> I'm specifically thinking of OBS. Trying to compile OBS from source code 
> results in an executable that is approximately one tenth the size of the 
> officially distributed one, that is not portable to other people's machines, 
> unless every library is in the exact same spot (Homebrew vs macports, or in 
> one case, one person's ~/lib.).

Reply via email to