Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / MySQL / Проблемы и распространенные ошибки /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Вопросы, связанные с инсталляцией - Программирование от RIN.RU
Вопросы, связанные с инсталляцией




Проблемы при линковании с клиентской библиотекой 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  Обсудить в чате

8  В тему

Как определить, чем вызваны проблемы

Распространенные ошибки при использовании MySQL

Вопросы, связанные с администрированием

Проблемы, относящиеся к запросам

Вопросы, связанные с определением таблиц

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь