On Wed, 31 Jul 2019 at 9:14 am, Darryl Philip Baker < darryl.ba...@northwestern.edu> wrote:
> On 7/31/19, 4:29 AM, "Rainer Canavan" <rainer.cana...@sevenval.com> wrote: > > In my opinion, this is not a bug. autoconf has been handling this the > > way it currently does for decades. Adding an RUN_PATH has the > potentially > > unwanted side effect that the binary will preferentially use > libraries from > > that directory instead of the system search paths. Additionally, the > library > > locations during build time are frequently different from those used > at > > run time. If you want your library locations fixed at build time, > try cmake. > > Sorry to jump in in the middle of this conversation but if you really want > to fix the libraries at build time just create a static executable. > I want to mention this approach even though I'm not a fan of it in most > cases, especially for complex applications with network connectivity. > Pros: > On every machine it has exactly the libraries it was built with, > no matter what or where anything is installed on that system. > (Before the advent of shared libraries, all executables were built > this way.) > Cons: > On every machine it has exactly the libraries it was built with, > no matter what or where anything is installed on that system. > System patching has no effect. The bugs in the libraries it was > built with stay until it is rebuilt with patched static libraries. > The executable itself is bigger both on disk and in memory because > it shares no code with any other program on the system. > > Building static executables is more useful for diagnostic and security > scanning applications where you cannot trust the integrity of the execution > environment. As an example, a statically built ps program may show rogue > processes where a ps using the in place shared libraries can be blinded to > those processes by installing a hacked version of the shared libraries. > Though it will not be effective against a kernel level hack. > Great stuff, thanks, this helps a lot in understanding the options better. I looked at cmake but it says in README.cmake that the support is experimental and only intended for windows. This is an area I have a lot to learn so don’t want to stray from the recommended approach at this point. Setting up LD_LIBRARY_PATH in the envvars seems the best way to go in my case then, with the need to avoid a system-wide install. Good to have understood the options better. Still don’t get why pcre is found in the location provided but not openssl. 🤷♂️ >