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.).