Details
-
Bug
-
Status: Open (View Workflow)
-
Major
-
Resolution: Unresolved
-
3.1.7
-
None
-
None
-
Red Hat 7.6
Description
I am attempting to use the libmariadb.so shared library from the mariadb-connector-c-3.1.7-linux-x86_64 binary download link.
When linking against it using either the system OpenSSL 1.0.2 binaries or ones I built myself I see the following link error:
/opt/mariadb-connector-c-3.1.7-linux-i686/lib/mariadb/libmariadb.so: undefined reference to `SSL_get_error@OPENSSL_1.0.0'
|
/opt/mariadb-connector-c-3.1.7-linux-i686/lib/mariadb/libmariadb.so: undefined reference to `SSL_get_peer_certificate@OPENSSL_1.0.0'
|
/opt/mariadb-connector-c-3.1.7-linux-i686/lib/mariadb/libmariadb.so: undefined reference to `SSL_CTX_load_verify_locations@OPENSSL_1.0.0'
|
/opt/mariadb-connector-c-3.1.7-linux-i686/lib/mariadb/libmariadb.so: undefined reference to `SSL_set_ex_data@OPENSSL_1.0.0'
|
/opt/mariadb-connector-c-3.1.7-linux-i686/lib/mariadb/libmariadb.so: undefined reference to `SSL_use_certificate_file@OPENSSL_1.0.0'
|
/opt/mariadb-connector-c-3.1.7-linux-i686/lib/mariadb/libmariadb.so: undefined reference to `SSL_get_ex_data@OPENSSL_1.0.0'
|
/opt/mariadb-connector-c-3.1.7-linux-i686/lib/mariadb/libmariadb.so: undefined reference to `SSL_write@OPENSSL_1.0.0'
|
/opt/mariadb-connector-c-3.1.7-linux-i686/lib/mariadb/libmariadb.so: undefined reference to `SSL_clear@OPENSSL_1.0.0'
|
/opt/mariadb-connector-c-3.1.7-linux-i686/lib/mariadb/libmariadb.so: undefined reference to `CRYPTO_THREADID_set_numeric@OPENSSL_1.0.0'
|
/opt/mariadb-connector-c-3.1.7-linux-i686/lib/mariadb/libmariadb.so: undefined reference to `SSL_set_cipher_list@OPENSSL_1.0.0'
|
/opt/mariadb-connector-c-3.1.7-linux-i686/lib/mariadb/libmariadb.so: undefined reference to `ERR_get_error@OPENSSL_1.0.0'
|
/opt/mariadb-connector-c-3.1.7-linux-i686/lib/mariadb/libmariadb.so: undefined reference to `X509_NAME_ENTRY_get_data@OPENSSL_1.0.0'
|
/opt/mariadb-connector-c-3.1.7-linux-i686/lib/mariadb/libmariadb.so: undefined reference to `SSL_CIPHER_get_name@OPENSSL_1.0.0'
|
/opt/mariadb-connector-c-3.1.7-linux-i686/lib/mariadb/libmariadb.so: undefined reference to `SSL_use_PrivateKey@OPENSSL_1.0.0'
|
/opt/mariadb-connector-c-3.1.7-linux-i686/lib/mariadb/libmariadb.so: undefined reference to `X509_get_subject_name@OPENSSL_1.0.0'
|
/opt/mariadb-connector-c-3.1.7-linux-i686/lib/mariadb/libmariadb.so: undefined reference to `CRYPTO_get_id_callback@OPENSSL_1.0.0'
|
/opt/mariadb-connector-c-3.1.7-linux-i686/lib/mariadb/libmariadb.so: undefined reference to `SSL_load_error_strings@OPENSSL_1.0.0'
|
/opt/mariadb-connector-c-3.1.7-linux-i686/lib/mariadb/libmariadb.so: undefined reference to `SSL_version@OPENSSL_1.0.0'
|
/opt/mariadb-connector-c-3.1.7-linux-i686/lib/mariadb/libmariadb.so: undefined reference to `X509_STORE_set_flags@OPENSSL_1.0.0'
|
/opt/mariadb-connector-c-3.1.7-linux-i686/lib/mariadb/libmariadb.so: undefined reference to `SSL_new@OPENSSL_1.0.0'
|
/opt/mariadb-connector-c-3.1.7-linux-i686/lib/mariadb/libmariadb.so: undefined reference to `CRYPTO_set_locking_callback@OPENSSL_1.0.0'
|
/opt/mariadb-connector-c-3.1.7-linux-i686/lib/mariadb/libmariadb.so: undefined reference to `X509_NAME_get_index_by_NID@OPENSSL_1.0.0'
|
...
|
After doing some research I determined that the MariaDB C client has been built and linked on a system that has OpenSSL binaries that have version signed symbols.
https://mta.openssl.org/pipermail/openssl-users/2018-July/008301.html
Using these instructions I built new OpenSSL binaries that have the OPENSSL_1.0.0 version applied to all globally exported symbols. With this new set of binaries I am able to link against the MariaDB C Connector.
Vanilla builds of OpenSSL do not document using symbol versioning and as far as I can tell the Red Hat 7.x distributions we are using do not provide them either.
Is this by design or an accident. I think the generic Linux binaries should be linked against a more generic build of OpenSSL.