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