Как мне исправить "Символ не найден: _is_prefix" при компиляции Perl DBD::mysql?
Сначала я хотел собрать пакет DBD:: mysql. Это продолжало давать сбой, потому что все, что привело к make, не могло быть загружено для тестов с Symbol not found: _is_prefix
, Поэтому я предположил, что cpan может быть немного старым. Я знаю, что это случайное предположение, но cpan сказал мне установить последнюю версию Bundle:: CPAN.
Кто успешно установил DBD:: mysql или Bundle::CPAN
в Mac OS X 10.5? Не могли бы вы порекомендовать что-нибудь, что я мог бы сделать по-другому?
Это perl, v5.8.8, созданный для darwin-thread-multi-2level (с 4 зарегистрированными патчами, смотрите perl -V для более подробной информации)
/ usr / local / mysql / bin / mysql Ver 14.14 Distrib 5.1.36, для apple-darwin9.5.0 (i386) с использованием readline 5.1
Вот журнал вывода CPAN для DBD:: mysql:
Написание Makefile для DBD::mysql cc -c -I/Library/Perl/5.8.8/darwin-thread-multi-2level/auto/DBI -I/usr/local/mysql/include -DDBD_MYSQL_INSERT_ID_IS_GOOD -g -arch ppc -arch i386 -g -pipe -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -Wdeclaration-after-Statement -I/usr/local/include -O3 -DVERSION=\"4.012\" -DXS_VERSION=\"4.012\" "-I/System/Library/Perl/5.8.8/darwin-thread-multi-2level/CORE" dbdimp.c /usr/bin/perl -p -e "s/~DRIVER~/mysql/g" /Library/Perl/5.8.8/darwin-thread-multi-2level/auto/DBI/Driver.xst > mysql.xsi Запуск Mkbootstrap для DBD::mysql () chmod 644 mysql.bs /usr/bin/perl /System/Library/Perl/5.8.8/ExtUtils/xsubpp -typemap /System/Library/Perl/5.8.8/ExtUtils/typemap mysql.xs > mysql.xsc && mv mysql.xsc mysql.c cp lib/DBD/mysql.pm blib/lib/DBD/mysql.pm cp lib/DBD/mysql/GetInfo.pm blib/lib/DBD/mysql/GetInfo.pm cp lib/DBD/mysql/INSTALL.pod blib/lib/DBD/mysql/INSTALL.pod cp lib/Bundle/DBD/mysql.pm blib/lib/Bundle/DBD/mysql.pm cp mysql.bs blib/arch/auto/DBD/mysql/mysql.bs chmod 644 blib/arch/auto/DBD/mysql/mysql.bs Предупреждение: повторное определение функции 'do' обнаружено в mysql.xs, строка 225. Предупреждение: дублирующее определение функции 'rows' обнаружено в mysql.xs, line 650 cc -c -I/Library/Perl/5.8.8/darwin-thread-multi-2level/auto/DBI -I/usr/local/mysql/include -DDBD_MYSQL_INSERT_ID_IS_GOOD -g -arch ppc -arch i386 -g -pipe -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-строго-псевдонимы -Wdeclaration-after-Statement -I/usr/local/include -O3 -DVERSION=\"4.012\" -DXS_VERSION=\"4.012\" "-I/System/Library/Perl/5.8.8/darwin-thread-multi-2level/CORE" mysql.c dbdimp.c: в функции 'mysql_describe': dbdimp.c:3309: предупреждение: назначение из несовместимого указателя тип dbdimp.c: в функции 'mysql_describe': dbdimp.c:3309: предупреждение: назначение из несовместимого указателя типа rm -f blib/arch/auto/DBD/mysql/mysql.bundle LD_RUN_PATH="/usr/local/mysql/lib" /usr/bin/perl myld cc -mmacosx-version-min=10.5.7 -arch ppc -arch i386 -bundle -неопределенный dynamic_lookup -L/usr/local/lib dbdimp.o mysql.o -o blib/arch/auto/DBD/mysql/mysql.bundle \ -L/usr/local/mysql/lib -lmysqlclient -lz -lm \ chmod 755 blib/arch/auto/DBD/mysql/mysql.bundle Управление blib/man3/DBD::mysql.3pm Управление blib/man3/DBD::mysql::INSTALL.3pm Управление blib/man3/Bundle::DBD::mysql.3pm CAPTTOFU/DBD-mysql-4.012.tar.gz /usr/bin/make -j3 -j3 - ОК Выполнение make test PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/00base.t .................. 1/6 Вызов спасения. Дальнейшее тестирование остановлено: не удалось загрузить DBD::mysql # Неудачный тест 'use DBD::mysql;' # в строке t / 00base.t 21. # Пытался использовать 'DBD::mysql'. # Ошибка: не удается загрузить '/Users/dlamblin/.cpan/build/DBD-mysql-4.012-4n3pv8/blib/arch/auto/DBD/mysql/mysql.bundle' для модуля DBD::mysql: dlopen(/ Пользователи /dlamblin/.cpan/build/DBD-mysql-4.012-4n3pv8/blib/arch/auto/DBD/mysql/mysql.bundle, 2): символ не найден: _is_prefix # Ссылка с: /Users/dlamblin/.cpan/build/DBD-mysql-4.012-4n3pv8/blib/arch/auto/DBD/mysql/mysql.bundle # Ожидается в: динамический поиск # в строке (eval 7) 2 # Сбой компиляции в требовании в строке 2 (eval 7). # BEGIN fail - компиляция прервана в (eval 7) строке 2. FAILED- дальнейшее тестирование остановлено: невозможно загрузить DBD::mysql make: *** [test_dynamic] Ошибка 255 CAPTTOFU/DBD-mysql-4.012.tar.gz /usr/bin/make test - NOT OK // подсказка // чтобы увидеть результаты cpan-testers для установки этого модуля, попробуйте: reports CAPTTOFU/DBD-mysql-4.012.tar.gz Выполнение make install make make test вернулось плохое состояние, без принудительной установки не будет. Сбой при выполнении этой команды: CAPTTOFU/DBD-mysql-4.012.tar.gz: make_test NO
6 ответов
Хорошо, если вы получите эти ошибки, я теперь знаю следующее:
MySQL 5.1 for Mac OS X x86_64
не совместим сDBD::mysql
(еще). Установить 32-битнуюx86
версия, и попробуйте еще раз. Вы добьетесь успеха. Я желаюperl Makefile.pl
просто скажу вам, что в баннере.Bundle::CPAN
были проблемы, потому что я не устанавливал как root. Почему это заставляет его сообщать циклические ссылки вместо проблем с разрешениями на установку, я никогда не пойму.
Пожалуйста, добавьте комментарий, если и когда это стало устаревшей информацией.
Установка (бета) 5.4.1 64-битной версии mysql, доступной на их веб-сайте разработчика, решает проблему. Проверено на снежном барсе.
Установка последней бета-версии 64-разрядной Mysql исправлена проблема на моем компьютере.
Где жаловаться на круговую зависимость? Похоже, вы пытаетесь создать ссылку на несовместимую версию библиотек mysql. Символ, который он ищет, отсутствует в загруженной вами библиотеке. Я не думаю, что это проблема, вызванная CPAN.pm или сценарием cpan.
Некоторые вопросы:
- Кто скомпилировал perl? Это Apple, Perl?
- Кто скомпилировал mysql? Это ваша собственная версия, так как она находится в /usr/local?
- Вы ранее компилировали другие версии? Я начинаю с компиляции, чтобы убедиться, что все указывает на правильные места.
Я не занимался этой проблемой, но обнаружил, что MacPorts убрал все проблемы с несовместимостью с UNIX. Возможно, вы захотите попробовать это, прежде чем перенести слишком много боли и страданий.