Проблема сцепления библиотеки mysqlclient
-
21-09-2019 - |
Вопрос
Я связываю приложение с библиотекой MySQLClient на 64 -разрядном CentOS 5.4 и получаю ошибку сцепления (не может найти -lmysqlClient). Библиотека находится в/usr/lib64/mysql/:
una@localhost$ ll /usr/lib64/mysql/
total 9072
...
lrwxrwxrwx 1 root root 26 Jan 3 15:54 libmysqlclient_r.so -> libmysqlclient_r.so.15.0.0
lrwxrwxrwx 1 root root 26 Jan 3 15:54 libmysqlclient_r.so.15 -> libmysqlclient_r.so.15.0.0
-rwxr-xr-x 1 root root 1518456 Sep 4 01:28 libmysqlclient_r.so.15.0.0
lrwxrwxrwx 1 root root 24 Jan 3 15:54 libmysqlclient.so -> libmysqlclient.so.15.0.0
lrwxrwxrwx 1 root root 24 Jan 3 15:54 libmysqlclient.so.15 -> libmysqlclient.so.15.0.0
-rwxr-xr-x 1 root root 1514000 Sep 4 01:28 libmysqlclient.so.15.0.0
...
И каталог, кажется, правильно зарегистрирован для Linux Linker:
una@localhost$ cat /etc/ld.so.conf.d/mysql-x86_64.conf
/usr/lib64/mysql
Единственный способ связать приложение на этой машине, это указать полный путь к файлу библиотеки, который недопустим в моем случае. Что может вызвать проблему здесь?
Спасибо.
Решение
-L/usr/lib64/mysql
The ld.so.conf stuff is only used at runtime, not compile time.
Другие советы
/usr/lib64/mysql is certainly not in your gcc's default search path. You may use a autoconf script to search for the installation path of libmysqlclient on this kind of a distribution, and dynamically use the found location with the -L flag.