Проблемы при линковании с клиентской библиотекой MySQL
Если при линковании программы получены ошибки неразрешенных ссылок на символы, имена которых начинаются с mysql_ , подобные следующим:
/tmp/ccFKsdPa.o: In function 'main': /tmp/ccFKsdPa.o(.text+0xb): undefined reference to 'mysql_init' /tmp/ccFKsdPa.o(.text+0x31): undefined reference to 'mysql_real_connect' /tmp/ccFKsdPa.o(.text+0x57): undefined reference to 'mysql_real_connect' /tmp/ccFKsdPa.o(.text+0x69): undefined reference to 'mysql_error' /tmp/ccFKsdPa.o(.text+0x9a): undefined reference to 'mysql_close'
то их можно устранить, добавив -Lpath-to-the-mysql-library -lmysqlclient в самом конце используемой команды линкования.
Если выдаются ошибки undefined reference для функции uncompress или compress , добавьте в самом конце команды линкования -lz и повторите попытку!
Если получены ошибки undefined reference для функций, которые должны присутствовать в системе, таких как connect , то сверьтесь по странице руководства для данной функции, какие библиотеки необходимо добавить в команде линкования!
Получение ошибок undefined reference для функций, отсутствующих в используемой системе, наподобие следующего:
mf_format.o(.text+0x201): undefined reference to '__lxstat'
обычно означает, что библиотека скомпилирована в системе, которая не на 100% совместима с системой пользователя. В этом случае необходимо загрузить последнюю поставку с исходными текстами MySQL и откомпилировать библиотеку самостоятельно (см. раздел Установка исходного дистрибутива MySQL).
Если при попытке выполнить программу выдаются ошибки о ненайденных символах, начинающихся с mysql_ , или о том, что не удается найти библиотеку mysqlclient , то это означает, что система не может найти динамической библиотеки libmysqlclient.so .
Чтобы исправить это, необходимо предписать системе проводить поиск динамических библиотек в каталоге с клиентской библиотекой MySQL. Это можно сделать одним из следующих способов:
Добавить в переменную окружения LD_LIBRARY_PATH путь к каталогу, содержащему libmysqlclient.so .
Добавить в переменную окружения LD_LIBRARY путь к каталогу, содержащему libmysqlclient.so .
Скопировать libmysqlclient.so в каталог, просматриваемый системой при поиске библиотек, таких как '/lib', и обновить информацию о распределенных библиотеках, выполнив ldconfig .
Другой способ решения этой проблемы заключается в статическом линковании программы с использованием -static , или в удалении динамических библиотек MySQL до линкования своего кода. Во втором случае необходимо удостовериться, что динамические библиотеки не используются другими программами!
1 2
8 8 8
| |