Приложение A. Проблемы и распространенные ошибки |
Пред. |
|
След. |
A.3. Вопросы, связанные с инсталляцией
A.3.1. Проблемы при линковании с клиентской библиотекой 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 и откомпилировать библиотеку самостоятельно (see Раздел 2.3, «Установка исходного дистрибутива MySQL»).
Если при попытке выполнить программу выдаются ошибки о ненайденных символах, начинающихся с mysql_ , или о том, что не удается найти библиотеку mysqlclient , то это означает, что система не может найти динамической библиотеки libmysqlclient.so .
Чтобы исправить это, необходимо предписать системе проводить поиск динамических библиотек в каталоге с клиентской библиотекой MySQL. Это можно сделать одним из следующих способов:
Добавить в переменную окружения LD_LIBRARY_PATH путь к каталогу, содержащему libmysqlclient.so .
Добавить в переменную окружения LD_LIBRARY путь к каталогу, содержащему libmysqlclient.so .
Скопировать libmysqlclient.so в каталог, просматриваемый системой при поиске библиотек, таких как /lib , и обновить информацию о распределенных библиотеках, выполнив ldconfig .
Другой способ решения этой проблемы заключается в статическом линковании программы с использованием -static , или в удалении динамических библиотек MySQL до линкования своего кода. Во втором случае необходимо удостовериться, что динамические библиотеки не используются другими программами!
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|