Spec-Zone .ru
спецификации, руководства, описания, API
|
Если Perl сообщает, что не может найти ../mysql/mysql.so
модуль, проблема состоит,
вероятно в том, что Perl не может расположиться libmysqlclient.so
совместно
используемая библиотека. Следует быть в состоянии решить эту проблему одним из следующих методов:
Копия libmysqlclient.so
к каталогу, где Ваши другие
совместно используемые библиотеки располагаются (вероятно, /usr/lib
или
/lib
).
Измените -L
опции, используемые, чтобы скомпилировать
DBD::mysql
отразить фактическое расположение libmysqlclient.so
.
На Linux можно добавить путь каталога где libmysqlclient.so
располагается к /etc/ld.so.conf
файл.
Добавьте путь
каталога где libmysqlclient.so
располагается к LD_RUN_PATH
переменная окружения. Некоторое системное использование LD_LIBRARY_PATH
вместо этого.
Отметьте, что Вы, возможно, также должны изменить -L
опции, если есть другие
библиотеки, которые компоновщик не в состоянии найти. Например, если компоновщик не может найти libc
потому что это находится в /lib
и команда
ссылки определяет -L/usr/lib
, изменитесь -L
опция к
-L/lib
или добавьте -L/lib
к существующей команде
ссылки.
Если Вы получаете следующие ошибки от DBD::mysql
, Вы, вероятно, используете gcc (или используете старый двоичный файл, скомпилированный с gcc):
/usr/bin/perl: can't resolve symbol '__moddi3'/usr/bin/perl: can't resolve symbol '__divdi3'
Добавить -L/usr/lib/gcc-lib/... -lgcc
к команде ссылки, когда mysql.so
библиотека создается (проверьте, что вывод от делает для mysql.so
когда Вы
компилируете клиент Perl). -L
опция должна определить путь каталога где libgcc.a
располагается на Вашей системе.
Другая причина этой проблемы может состоять в том, что Perl и MySQL оба не компилируются с gcc. В этом случае можно решить несоответствие, компилируя обоих с gcc.