2.12.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.