[Privoxy-devel] OpenSSL library location

Ian Silvester iansilvester at fastmail.fm
Sun Dec 4 21:00:39 CET 2022


Thanks for the tip Roland,

ldd doesn't exist on macos however a quick web search led me to the equivalent 'otool -L'. ldconfig doesn't exist nor does my user account have an LD_LIBRARY_PATH environment variable, but I'll do further research to see how macos achieves the equivalent.

Thanks!

Ian

On Sun, 4 Dec 2022, at 05:53, Roland Rosenfeld wrote:
> Hi Ian!
>
> On Sa, 03 Dez 2022, Ian Silvester wrote:
>
>> Somewhat noob questions about how privoxy locate(s) the openssl
>> library file at runtime versus the setup on my build machine.
>> 
>> In order to have the headers installed for compilation, I installed
>> OpenSSL on the Mac via Homebrew. This installs a hive under
>> /usr/local/opt/openssl. The Mac however comes with OpenSSL libraries
>> at /usr/lib. If I include the libraries in my install package from
>> /usr/local/opt/openssl/lib, will Privoxy find this version of the
>> library automatically, or will it rely on the PATH of the target
>> machine and hence find the wrong version at /usr/lib? I hardly think
>> I can go overwriting the system built-in library files, so what to
>> do?
>> 
>> I appreciate this is a very generic "how to package software with
>> external library dependencies" question, but I don't want to
>> distribute something that kind-of sort-of works but might be using
>> down-level libraries.
>
> I'm not familiar how MacOS works, but since it is based on BSD, I
> expect it to work similar to Linux, so maybe you can reuse what I tell
> you about Linux:
>
> In Linux there is a command ldd, which can be used to check which
> shared libraries an excecutable uses:
>
> # ldd /usr/sbin/privoxy 
>         linux-vdso.so.1 (0x00007ffdb978e000)
>         libbrotlidec.so.1 => 
> /usr/lib/x86_64-linux-gnu/libbrotlidec.so.1 (0x00007f1e10bf2000)
>         libmbedtls.so.12 => /usr/lib/x86_64-linux-gnu/libmbedtls.so.12 
> (0x00007f1e10bc2000)
>         libmbedx509.so.0 => /usr/lib/x86_64-linux-gnu/libmbedx509.so.0 
> (0x00007f1e10ba1000)
>         libmbedcrypto.so.3 => 
> /usr/lib/x86_64-linux-gnu/libmbedcrypto.so.3 (0x00007f1e10b3a000)
>         libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 
> (0x00007f1e10b1d000)
>         libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 
> (0x00007f1e10aaa000)
>         libpcreposix.so.3 => 
> /usr/lib/x86_64-linux-gnu/libpcreposix.so.3 (0x00007f1e10aa3000)
>         libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 
> (0x00007f1e10a81000)
>         libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 
> (0x00007f1e108ac000)
>         libbrotlicommon.so.1 => 
> /usr/lib/x86_64-linux-gnu/libbrotlicommon.so.1 (0x00007f1e10889000)
>         /lib64/ld-linux-x86-64.so.2 (0x00007f1e10cb1000)
>
> On the left of every line you see the library name, that is referenced
> in the privoxy binary, while at right of the "=>" you see where the
> shared library is found on my system.  If the library cannot
> automatically been found this looks like:
>
>         libmbedtls.so.12 => not found
>
> In Linux the location of the shared library paths is listed in
> /etc/ld.so.conf (which includes /etc/ld.so.conf.d/*).
> The (cached) list of all libraries found in these paths can be shown
> with
>  ldconfig -p
>
> On a user base you can extend the list of library paths using the
> environment variable LD_LIBRARY_PATH, but this usually shouldn't be
> necessary.
>
>
> Hope that this can be transferred for MacOS...
>
> Greetings
> Roland


More information about the Privoxy-devel mailing list