Discussion:
[odb-users] odb-mysql not using most recent version of libmysqlclient.so
Weiqing Huang
2018-07-26 05:17:33 UTC
Permalink
I have mysql-server 5.7 installed
ls -l /usr/lib64/mysql/
-rw-r--r--. 1 root root 21389906 Mar  4 22:01 libmysqlclient.a
lrwxrwxrwx. 1 root root       16 Jul 26 03:53 libmysqlclient_r.a -> libmysqlclient.a
lrwxrwxrwx. 1 root root       20 Jul 26 03:35 libmysqlclient_r.so -> libmysqlclient.so.18*
lrwxrwxrwx. 1 root root       20 Jul 26 02:53 libmysqlclient_r.so.18 -> libmysqlclient.so.18*
lrwxrwxrwx. 1 root root       24 Jul 26 02:53 libmysqlclient_r.so.18.1.0 -> libmysqlclient.so.18.1.0*
lrwxrwxrwx. 1 root root       20 Jul 26 03:52 libmysqlclient.so -> libmysqlclient.so.20*
lrwxrwxrwx. 1 root root       24 Jul 26 02:53 libmysqlclient.so.18 -> libmysqlclient.so.18.1.0*
-rwxr-xr-x. 1 root root  9581128 Mar  4 21:53 libmysqlclient.so.18.1.0*
lrwxrwxrwx. 1 root root       24 Jul 26 02:53 libmysqlclient.so.20 -> libmysqlclient.so.20.3.9*
-rwxr-xr-x. 1 root root  9885694 Mar  4 22:01 libmysqlclient.so.20.3.9*
-rw-r--r--. 1 root root    44126 Mar  4 22:00 libmysqlservices.a

after I built libodb-mysql-2.4.0
ldd odb/mysql/.libs/libodb-mysql-2.4.so
        linux-vdso.so.1 =>  (0x00007ffd0a138000)
        libodb-2.4.so => /usr/local/lib/libodb-2.4.so (0x00002ad55a51d000)
        libmysqlclient.so.18 => /usr/lib64/mysql/libmysqlclient.so.18 (0x00002ad55a741000)

why isn't it using libmysqlclient.so.20 instead? in my application, other modules are using the most recent one (libmysqlclient.so.20)

this gave me warning like this while building the entire application:
/bin/ld: warning: libmysqlclient.so.18, needed by //usr/local/lib/libodb-mysql.so, may conflict with libmysqlclient.so.20

many thanks!
Boris Kolpackov
2018-07-27 13:22:02 UTC
Permalink
lrwxrwxrwx. 1 root root 20 Jul 26 03:52 libmysqlclient.so -> libmysqlclient.so.20*
[...]
after I built libodb-mysql-2.4.0
ldd odb/mysql/.libs/libodb-mysql-2.4.so
        linux-vdso.so.1 => (0x00007ffd0a138000)
        libodb-2.4.so => /usr/local/lib/libodb-2.4.so (0x00002ad55a51d000)
        libmysqlclient.so.18 => /usr/lib64/mysql/libmysqlclient.so.18 (0x00002ad55a741000)
why isn't it using libmysqlclient.so.20 instead?
During the build it links libmysqlclient.so so this means either (1) it
was built before the above libmysqlclient.so symlink started pointing to
*.20 or, and this is most likely, (2) there is another libmysqlclient.so
(maybe in /usr/local/lib) that takes precedence.

Loading...