]> git.netwichtig.de Git - user/henk/code/exim.git/blobdiff - doc/doc-txt/openssl.txt
Not all the world is binutils ld
[user/henk/code/exim.git] / doc / doc-txt / openssl.txt
index 6e6db9f69cefec0966d50986bcbc6bd357860ef4..194ae7cf88435667b19cda03de0cef8e512f75ff 100644 (file)
@@ -36,11 +36,16 @@ Extract the current source of OpenSSL.  Change into that directory.
 This assumes that `/opt/openssl` is not in use.  If it is, pick
 something else.  `/opt/exim/openssl` perhaps.
 
-    ./config --prefix=/opt/openssl --openssldir=/etc/ssl
-    enable-ssl-trace
+    ./config --prefix=/opt/openssl --openssldir=/etc/ssl  \
+        -L/opt/openssl/lib -Wl,-R/opt/openssl/lib         \
+        enable-ssl-trace shared
     make
     make install
 
+On some systems, the linker uses `-rpath` instead of `-R`; on such systems,
+replace the parameter starting `-Wl` with: `-Wl,-rpath,/opt/openssl/lib`.
+There are more variations on less common systems.
+
 You now have an installed OpenSSL under /opt/openssl which will not be
 used by any system programs.
 
@@ -48,17 +53,21 @@ When you copy `src/EDITME` to `Local/Makefile` to make your build edits,
 choose the pkg-config approach in that file, but also tell Exim to add
 the relevant directory into the rpath stamped into the binary:
 
+    PKG_CONFIG_PATH=/opt/openssl/lib/pkgconfig
+
     SUPPORT_TLS=yes
     USE_OPENSSL_PC=openssl
-    EXTRALIBS_EXIM=-ldl -Wl,-rpath,/opt/openssl/lib
+    LDFLAGS+=-ldl -Wl,-rpath,/opt/openssl/lib
+
+[jgh: I've see /usr/local/lib used]
 
-The -ldl is needed by OpenSSL 1.1+ on Linux and is not needed on most
-other platforms.
+The -ldl is needed by OpenSSL 1.0.2+ on Linux and is not needed on most
+other platforms.  The LDFLAGS is needed because `pkg-config` doesn't know
+how to emit information about RPATH-stamping, but we can still leverage
+`pkg-config` for everything else.
 
-Then tell pkg-config how to find the configuration files for your new
-OpenSSL install, and build Exim:
+Then build Exim:
 
-    export PKG_CONFIG_PATH=/opt/openssl/lib/pkgconfig
     make
     sudo make install
 
@@ -77,7 +86,7 @@ To look at the libraries _probably_ found by the linker, use:
     ldd $(which exim)          # most platforms
     otool -L $(which exim)     # MacOS
 
-although that does not correclty handle restrictions imposed upon
+although that does not correctly handle restrictions imposed upon
 executables which are setuid.
 
 If the `chrpath` package is installed, then:
@@ -86,6 +95,12 @@ If the `chrpath` package is installed, then:
 
 will show the DT_RPATH stamped into the binary.
 
+Your `binutils` package should come with `readelf`, so an alternative
+is to run:
+
+    readelf -d $(which exim) | grep RPATH
+
+[jgh: I've seen that spelled RUNPATH]
 
 Very Advanced
 -------------