2.13.3 Perl DBI / DBD 인터페이스 사용 문제
Perl이 ../mysql/mysql.so
모듈을 찾을 수없는 경우, 문제는 아마도 Perl이 libmysqlclient.so
공유 라이브러리의 위치를 모르는 것입니다. 이 문제는 다음 방법 중 하나로 해결할 수있을 것입니다.
libmysqlclient.so
를 다른 공유 라이브러리가 (아마도/usr/lib
또는/lib
) 디렉토리에 복사합니다.DBD::mysql
컴파일에 사용되는-L
옵션을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 not resolve symbol '__moddi3' / usr / bin / perl : can not resolve symbol '__divdi3'
mysql.so
라이브러리가 빌드 될 때 -L/usr/lib/gcc-lib/... -lgcc
를 링크 명령에 추가합니다 (Perl 클라이언트의 컴파일시 make의 출력 mysql.so
확인 합니다). -L
옵션은 시스템의 libgcc.a
이있는 디렉토리의 경로 이름을 지정하도록하십시오.
이 문제의 또 다른 원인은 Perl 및 MySQL을 모두 gcc로 컴파일되지 않은 경우입니다. 이 경우 모두 gcc로 컴파일하는 것으로이 불일치를 해결할 수 있습니다.