2.10.3 Проблемы при использовании интерфейса Perl DBI/DBD
Если 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 (проверьте вывод от make для mysql.so, когда вы компилируете Perl-клиент). Параметр -L должен указывать путь к каталогу, где расположена libgcc.a на вашей системе.
Еще одной причиной этой проблемы может быть то, что Perl и MySQL не были скомпилированы с помощью gcc. В этом случае вы можете решить эту проблему, скомпилировав оба с помощью gcc.
© 2025 Oracle
Licensed under the GPLv2 License.