• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 서비스
    • MySQL유지보수
    • MySQL라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.1 한글메뉴얼) [close]
  • 1. MySQL 5.1 Reference Manual
  • 2. Installing and MySQL 업그레이드하기
  • 1. 설치 관련 일반 사항
    2. 바이너리 배포판을 사용해서 MySQL을 설치하는 표준 방법
    3. 윈도우에 MySQL 설치하기
    4. RPM 패키지를 사용해서 리눅스에 MySQL 설치하기
    5. Mac OS X에 MySQL 설치하기
    6. Solaris에 MySQL 설치하기
    7. Installing MySQL on NetWare
    8. 다른 유닉스 유사 시스템에 tar.qz 패키지를 사용해서 MySQL 설치하기
    9. 소스 배포판을 사용해서 MySQL 설치하기
    10. 설치 후 설정 및 테스팅
    11. MySQL 업그레이드 하기
    12. MySQL 다운그레이드 하기
    13. OS 관련 노트
    14. 환경 변수
    15. Perl Installation 노트
    1. 유닉스에 Perl 설치하기
    2. 윈도우에 ActiveState Perl 설치하기
    3. Perl DBI/DBD 인터페이스를 사용할 때의 문제점
  • 3. 사용 설명서 (Tutorial)
  • 4. MySQL 프로그램 사용하기
  • 5. 데이터베이스 관리
  • 6. 리플리케이션
  • 7. 최적화 (Optimization)
  • 8. 클라이언트 및 유틸리티 프로그램
  • 9. 언어 구조 (Language Structure)
  • 10. 문자 셋 지원
  • 24. API 및 라이브러리
  • 25. Connectors

2.15.3. Perl DBI/DBD 인터페이스를 사용할 때의 문제점

만약에 Perl이 ../mysql/mysql.so 모듈을 찾을 수 없다면, 문제는 아마도 Perl이 libmysqlclient.so 공유 라이브러리를 가져오지 못했기 때문일 것이다. 여러분은 아래에 열거된 방법 중에 하나를 가지고 이 문제를 해결해야 한다:

  • DBD::mysql 배포판을 컴파일 할 때, perl Makefile.PL 대신에 perl Makefile.PL -static -config 를 사용한다.
  • libmysqlclient.so 를 다른 공유 라이브러리가 저장되어 있는 디렉토리에 복사 한다 (/usr/lib 또는 /lib).
  • DBD::mysql을 컴파일할 때 사용하는 -L 옵션을 수정해서 libmysqlclient.so의 실제 위치를 반영하도록 만든다.
  • 리눅스에서는, libmysqlclient.so 가 저장되어 있는 디렉토리의 경로 이름을 /etc/ld.so.conf 파일에 추가 한다.
  • libmysqlclient.so 가 저장되어 있는 디렉토리의 경로 이름을 LD_RUN_PATH 환경 변수에 추가 한다. 어떤 시스템에서는 이것 대신에 LD_LIBRARY_PATH 를 사용하기도 한다.

만약에 링커가 찾지 못하는 다른 라이브러리가 존재한다면 -L 옵션을 수정할 필요도 있다는 점을 알기 바란다. 예를 들면, 링커가 /lib 에 있고 링크 명령어가 -L/usr/lib /lib를 지정하고 있기 때문에 libc 를 찾는데 실패하면, -L 옵션을 -L/lib 로 변경하거나 또는 -L/lib 를 존재하는 링크 명령어에 추가한다.

DBD::mysql에서 아래와 같은 에러를 보게 되면, 이것은 gcc 를 사용하고 있기 때문일 것이다 (또는 gcc로 컴파일된 구형 바이너리들을 사용하는 것이다):

 

/usr/bin/perl: can't resolve symbol '__moidd3'

/usr/bin/perl: can't resolve symbol '__divdi3'

mysql.so 라이브러리를 구축할 때 -L/usr/lib/gcc-lib/... –lgcc를 링크 명령어에 추가한다 (여러분이 Perl클라이언트를 컴파일 할 때 mysql.so 에 대해서 make가 만드는 결과를 검사한다). -L 옵션은 시스템에 libgcc.a 가 저장되어 있는 디렉토리의 경로 이름을 지정해 주도록 한다.

이 문제에 대한 다른 원인은 Perl과 MySQL이 모두 gcc로 컴파일 되지 않았다는 것을 의미할 수도 있다. 이와 같은 경우에는, 두 가지 모두를 gcc를 가지고 컴파일해서 불일치 되는 문제를 해결하면 된다.

테스트를 진행하는 동안에 DBD::mysql에서 아래의 에러를 볼 수도 있다:

 

t/00base............install_driver(mysql) failed:

Can't load '../blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql:

../blib/arch/auto/DBD/mysql/mysql.so: undefined symbol:

uncompress at /usr/lib/perl5/5.00503/i586-linux/DynaLoader.pm line 169.

 

이것은 -lz 압축 라이브러리를 링크 라인에 포함시킬 필요가 있음을 의미하는 것이다. 이 문제는 lib/DBD/mysql/Install.pm에서 아래의 라인을 변경하면 해결된다:

 

$sysliblist .= " -lm";

 

위의 라인을 아래와 같이 변경한다:

 

$sysliblist .= " -lm -lz";

 

이렇게 한 후에는 반드시 make realclean 를 실행하고 설치 과정을 처음부터 다시 진행한다.

서울시 강남구 영동대로 602 6층  TEL: 02-6061-0006
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved