I'm using a custom Linux distribution on an ARM box, that is based off of Ångström. Since all of the packages that I could find in the package manager are horribly out of date, I rebuilt all of the software that I could; with a few exceptions, all of the software is now the latest version. Generally, things are working well, but I'm encountering some issues when updating the installed software.
For example, I was previously using OpenSSL 1.0.2l, and recently built and installed OpenSSL 1.0.2n. The build and installation process went fine, but then to my dismay, some applications using OpenSSL's shared libraries stopped working. The ones I noticed include curl and php. Here's an example of an affected application:
$ curl curl: try 'curl --help' for more information curl: relocation error: /usr/lib/libcurl.so.4: symbol SSL_COMP_free_compression_methods, version OPENSSL_1.0.0 not defined in file libssl.so.1.0.0 with link time reference
I did build OpenSSL 1.0.2n (and previously 1.0.2l) following the Beyond Linux from Scratch instructions (here). This involves applying a patch file to the ld scripts, which adds versioning information. All of the symbols mentioned in the error messages in the affected programs are added by the patch, which make me suspect that the patch breaks something.
I found that I can resolve the error by rebuilding each program that is affected. For example, I rebuilt curl (which also happened to have a newer version available) with the new version of OpenSSL installed, and curl works now. I am willing to rebuild all of the affected programs, but it occurred to me that this completely defeats the purpose of using a shared library in the first place.
Is this error introduced by the patch shown on the BLFS page? If I rebuild OpenSSL without the patch (and rebuild the programs that depend on OpenSSL), will that prevent me from needing to rebuild dependent programs when there is a future update to OpenSSL?