Diab Jerius
2017-07-10 20:33:12 UTC
I recently posted a question about this to stackoverflow:
https://stackoverflow.com/questions/44979427/overriding-installation-path-in-shared-libraries-built-with-automake-libtool-dur
Rather than repeat the posting here, I'll just post the synopsis of the problem:
Starting with OS X 10.11, when System Integrity Protection is on,
dynamic linker environment variables are not passed to subprocesses.
In a project which produces two libraries, one dependent upon the
other, test code (a shell wrapper around an executable) linked against
the libraries fails to run, as the installation path is hardwired into
the libraries, the libraries have yet to be installed, and the dynamic
linker will try to find them using the hardwired paths in the
libraries. Because DYLD_LIBRARY_PATH is not passed along to
subprocesses (e.g., the executable run by the test wrapper script) it
is not possible to direct the linker to look elsewhere.
I posted a solution which uses the OS X install_name_tool to modify
the hardwired dependency information in the dependent library so that
testing can proceed, and restores it upon installation.
It's a bit of a kludge. Would anyone have a more elegant solution?
Thanks,
Diab
https://stackoverflow.com/questions/44979427/overriding-installation-path-in-shared-libraries-built-with-automake-libtool-dur
Rather than repeat the posting here, I'll just post the synopsis of the problem:
Starting with OS X 10.11, when System Integrity Protection is on,
dynamic linker environment variables are not passed to subprocesses.
In a project which produces two libraries, one dependent upon the
other, test code (a shell wrapper around an executable) linked against
the libraries fails to run, as the installation path is hardwired into
the libraries, the libraries have yet to be installed, and the dynamic
linker will try to find them using the hardwired paths in the
libraries. Because DYLD_LIBRARY_PATH is not passed along to
subprocesses (e.g., the executable run by the test wrapper script) it
is not possible to direct the linker to look elsewhere.
I posted a solution which uses the OS X install_name_tool to modify
the hardwired dependency information in the dependent library so that
testing can proceed, and restores it upon installation.
It's a bit of a kludge. Would anyone have a more elegant solution?
Thanks,
Diab