Aus irgendeinem unbekannten Grund verschwand mein libmysqlclient.a in meinem CentOS 7. Mein Programm bekam dann Linkerfehler und sagte, dass libmysqlclient nicht gefunden werden kann.welche lib zu verwenden? libmariadbclient oder libmysqlclient?
Und dann entdeckte ich, dass meine mysql-devel Paket gegangen ist:
yum info mysql-devel
yum install mysql-devel
Hier ist die Antwort:
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: repo.virtualhosting.hk
* epel: mirror.pregi.net
* extras: repo.virtualhosting.hk
* updates: repo.virtualhosting.hk
Package MariaDB-devel-10.2.5-1.el7.centos.x86_64 already installed and latest version
Deshalb denke ich, vielleicht sollte ich libmariadbclient stattdessen verwenden, aber wenn ich einen Link Mein Programm mit libmariadbclient, es hatte Verknüpfungsfehler:
/usr/lib64//libmariadbclient.a(openssl.c.o): In function `ma_tls_start':
(.text+0x191): undefined reference to `CRYPTO_num_locks'
/usr/lib64//libmariadbclient.a(openssl.c.o): In function `ma_tls_start':
(.text+0x1aa): undefined reference to `CRYPTO_THREADID_set_callback'
/usr/lib64//libmariadbclient.a(openssl.c.o): In function `ma_tls_start':
(.text+0x1b6): undefined reference to `CRYPTO_set_locking_callback'
/usr/lib64//libmariadbclient.a(openssl.c.o): In function `ma_tls_start':
(.text+0x1bb): undefined reference to `SSL_library_init'
/usr/lib64//libmariadbclient.a(openssl.c.o): In function `ma_tls_start':
(.text+0x1c7): undefined reference to `SSL_load_error_strings'
/usr/lib64//libmariadbclient.a(openssl.c.o): In function `ma_tls_start':
(.text+0x1cc): undefined reference to `OPENSSL_add_all_algorithms_noconf'
/usr/lib64//libmariadbclient.a(openssl.c.o): In function `ma_tls_end':
(.text+0x2b4): undefined reference to `CRYPTO_set_locking_callback'
/usr/lib64//libmariadbclient.a(openssl.c.o): In function `ma_tls_end':
(.text+0x2bb): undefined reference to `CRYPTO_set_id_callback'
/usr/lib64//libmariadbclient.a(openssl.c.o): In function `ma_tls_end':
(.text+0x2df): undefined reference to `CRYPTO_num_locks'
/usr/lib64//libmariadbclient.a(openssl.c.o): In function `ma_tls_end':
(.text+0x340): undefined reference to `EVP_cleanup'
/usr/lib64//libmariadbclient.a(openssl.c.o): In function `ma_tls_end':
(.text+0x345): undefined reference to `CRYPTO_cleanup_all_ex_data'
/usr/lib64//libmariadbclient.a(openssl.c.o): In function `ma_tls_end':
(.text+0x34a): undefined reference to `ERR_free_strings'
/usr/lib64//libmariadbclient.a(openssl.c.o): In function `ma_tls_end':
(.text+0x351): undefined reference to `CONF_modules_free'
/usr/lib64//libmariadbclient.a(openssl.c.o): In function `ma_tls_init':
(.text+0x3e1): undefined reference to `SSLv23_client_method'
/usr/lib64//libmariadbclient.a(openssl.c.o): In function `my_cb_threadid':
(.text+0x1e): undefined reference to `CRYPTO_THREADID_set_numeric'
/usr/lib64//libmariadbclient.a(ma_compress.c.o): In function `_mariadb_compress_alloc':
(.text+0x5d): undefined reference to `compress'
/usr/lib64//libmariadbclient.a(ma_compress.c.o): In function `_mariadb_uncompress':
(.text+0x191): undefined reference to `uncompress'
collect2: error: ld returned 1 exit status
Ich habe l verwendet ibmysqlclient, um sich mit meiner MariaDB 10.1 zu verbinden, und kürzlich versucht habe, es aus der Quelle zu erstellen, aber aufgrund von Problemen mit der OpenSSL 1.1-Version gescheitert. Hier sehen Sie meine anderen Posten für sie:
Error "incomplete type MD5_CONTEXT" with MariaDB 10.2 and Openssl 1.1.0e
Also ich bin verwirrt, warum mysqlclient.a verschwunden und welche lib sollte ich verwenden.
Kann jemand helfen?
Danke!
Ich habe versucht, bevor irgendetwas zu setzen -lmariadbclient, aber immer noch die Linkfehler haben. – kchkg
Kenji, hast du alle Abhängigkeiten installiert? Ich denke, es ist: "libssl-dev", "openssl-devel" und "libz-dev". – Mona
Mona, ich kann libssl-dev nicht installieren/finden, aber ich bin mir sicher, dass ich openssl-devel und libz-dev – kchkg